正在取消xml中任何级别的匹配节点的组织



我试图对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.

最新更新