我正在使用的某些SVG / XML文件的属性名称中带有破折号和冒号-例如:
<g> <a xlink:href="http://example.com" data-bind="121">...</a> </g>
我正在尝试弄清楚如何使用golang的encoding/xml软件包对这些属性进行编组。虽然虚线属性有效,但带有冒号的属性不起作用:
golang
encoding/xml
package main import ( "encoding/xml" "fmt" ) var data = ` <g> <a xlink:href="http://example.com" data-bind="121">lala</a> </g> ` type Anchor struct { DataBind int `xml:"data-bind,attr"` // this works XlinkHref string `xml:"xlink:href,attr"` // this fails } type Group struct { A Anchor `xml:"a"` } func main() { group := Group{} _ = xml.Unmarshal([]byte(data), &group) fmt.Printf("%#v\n", group.A) }
这些似乎是法律属性名称;任何想法如何提取xlink:href一个?谢谢。
xlink:href
您的示例片段不太正确,因为它不包含前缀的XML名称空间绑定xlink:。您可能想要的是:
xlink:
<g xmlns:xlink="http://www.w3.org/1999/xlink"> <a xlink:href="http://example.com" data-bind="121">lala</a> </g>
您可以使用名称空间URL解组此属性:
XlinkHref string `xml:"http://www.w3.org/1999/xlink href,attr"`
这是带有名称空间修复程序的示例程序的更新副本。