2016-05-14 14 views
1

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) 

備考:これは、マーシャリング解除文字列の簡単な例で、効果的に、私はまた、アンマーシャリング複雑な構造をしたいと思います。

答えて

0

人にはFullNameという名前の子供がいないようです。ただし、FullNameという名前の子を持つ「a」という名前の子があります。

ドキュメントに実際の例があります:https://golang.org/pkg/encoding/xml/#example_Unmarshal

+0

あなたは正しいです、それは問題に直面しています。 'xml:" Person> FullName "を指定した場合、結果は' Jerome Anthony'になり、 'xml:" a> Person> FullName "'を指定すると結果は 'Christina'になります。私は両方を同じ価値に統合したい。私はxpathと似たようなことをしています。「ネストレベルに関係なく、どのノードも 'FullName' – buddy123

+0

@ buddy123という名前の式を作成できます。あなたは[just](https:// godoc .org /?q = xpath)[that](https://godoc.org/?q=etree)。 – kostix

関連する問題