Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在xml中的任何级别上解组匹配的节点_Xml_Go - Fatal编程技术网

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

在xml中的任何级别上解组匹配的节点,xml,go,Xml,Go,我正在尝试解组一个xml并从中提取特定的节点,这些节点可以在几个不同的级别上。 例如,这样的Xml是有效的: <People> <Person> <FullName>Jerome Anthony</FullName> </Person> <a> <Person>

我正在尝试解组一个xml并从中提取特定的节点,这些节点可以在几个不同的级别上。 例如,这样的Xml是有效的:

<People>
            <Person>
                <FullName>Jerome Anthony</FullName>
            </Person>
            <a>
            <Person>
            <FullName>Christina</FullName>
            </Person>
        </a>
        </People>

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

在我看来,人们没有名为FullName的子级。但是,它有一个名为“a”的子级,该子级有一个名为FullName的子级


文档中有一个工作示例:

在我看来,人们似乎没有叫全名的孩子。但是,它有一个名为“a”的子级,该子级有一个名为FullName的子级


文档中有一个工作示例:

你说得对,这就是我面临的问题。如果我指定
xml:“Person>FullName”
,结果将是
Jerome Anthony
,而如果我指定
xml:“a>Person>FullName”
,结果将是
Christina
。我想将两者合并为相同的值。我想做与xpath类似的事情,在xpath中,您可以构建一个表达式,它说“给我任何节点,不管嵌套级别如何,也就是
FullName
@buddy123,您可以这样做。您是对的,这就是我面临的问题。如果我指定
xml:“Person>FullName”“
,结果将是
Jerome Anthony
,而如果我指定
xml:“a>Person>FullName”
,结果将是
Christina
。我想将两者合并为相同的值。我想做与xpath类似的事情,在xpath中,您可以构建一个表达式,表示“给我任何节点,不管嵌套级别如何,它的名称是
FullName
@buddy123,您可以这样做。
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)