在某些 XML 数据上使用 umashal 时,我无法访问命名空间标记中的属性。我正在尝试完成的一个工作示例在我的代码的第 14 行,它演示了成功地将标签中的属性加载name到<cpe-item>结构的Name字段中CPE。
但是,对名称间隔的标记执行相同的操作,例如在第 19 行(将name属性从<cpe23: cpe23-item>标记加载到结构的Name字段中CPE23)不起作用 - 没有找到值。
我没有看到这两个动作之间的差异以及为什么一个失败而另一个没有。
package main
import (
"encoding/xml"
"fmt"
)
type CPEs struct {
XMLName xml.Name `xml:"cpe-list"`
CPEs []CPE `xml:"cpe-item"`
}
type CPE struct {
Name string `xml:"name,attr"`
CPE23 CPE23 `xml:"cpe23: cpe23-item"`
}
type CPE23 struct {
Name string `xml:"cpe23: cpe23-item,name,attr"`
}
func main() {
var cpes CPEs
contents := `
<cpe-item name="I'm the cpe name!"><!--I can parse this attribute-->
<title>I'm the title!</title>
<references>
<reference href="https://example.com">Example</reference>
<reference href="https://example2.com">Example 2</reference>
</references>
<cpe-23:cpe23-item name="CPE 2.3 name!"/><!--I can't parse this attribute-->
</cpe-item>
</cpe-list>`
}
}
去游乐场链接 https://play.golang.org/p/eRMrFePDM4K
素胚勾勒不出你
相关分类