1 回答

TA贡献1827条经验 获得超9个赞
不幸的是,文档并没有提供太多的见解。与这个相对较新的问题进行比较。
但是,可以通过简单地从CPE23字段的标记中删除命名空间来使您的代码工作:
type CPE struct {
Name string `xml:"name,attr"`
CPE23 CPE23 `xml:"cpe23-item"`
}
type CPE23 struct {
Name string `xml:"name,attr"`
}
...或者通过在标签名称前加上完整的命名空间,用空格分隔:
type CPE struct {
Name string `xml:"name,attr"`
CPE23 CPE23 `xml:"http://scap.nist.gov/schema/cpe-extension/2.3 cpe23-item"`
}
看这个去玩
通过查看encoding/xml包的源代码,可以看到标记器将 xml 元素标签以<ns:foo>, where的形式读取到以下形式xmlns:ns="http://mynamespace.com"的xml.Name结构中:
xml.Name{
Space: "http://mynamespace.com",
Local: "foo"
}
然后它根据这两个字段解析目标结构上的标签。如果您的 struct 标签上没有命名空间,则它Local仅匹配 的值。
- 1 回答
- 0 关注
- 196 浏览
添加回答
举报