我试图对xml进行解组,并从中提取特定的节点,这些节点可能处于几个不同的级别。例如,这样的Xml是有效的:
<People>
<Person>
<FullName>Jerome Anthony</FullName>
</Person>
<a>
<Person>
<FullName>Christina</FullName>
</Person>
</a>
</People>
我想从这个xml中提取所有的FullName,不管它们的嵌套级别如何。我尝试过的示例代码不起作用:
type People struct {
Names []string `xml:"FullName"`
}
v := People{Names: []string{}}
err := xml.Unmarshal([]byte(data), &v)
if err != nil {
fmt.Printf("error: %v", err)
return
}
fmt.Printf("Names of people: %q", v)
备注:这是一个简单的字符串解组示例,实际上我也想解组复杂的结构。
在我看来,People没有一个名为FullName的孩子。然而,它有一个名为"a"的子项,该子项的名称为FullName。
文档中有一个工作示例:https://golang.org/pkg/encoding/xml/#example_Unmarshal.