解组xml中任何级别的匹配节点

时间:2016-05-14 07:14:23

标签: xml go

我试图解组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)

备注:这是解组字符串的一个简单示例,实际上我也希望解组复杂的结构。

1 个答案:

答案 0 :(得分:0)

在我看来,人们没有名为FullName的孩子。然而,它有一个名叫&#34; a&#34;有一个名为FullName的孩子。

文档中有一个正常的工作示例:https://golang.org/pkg/encoding/xml/#example_Unmarshal