2016-07-26 10 views
1

ich eine XML haben, die wie folgt aussieht:Parse eine XML-Array von einfachen Werten in go

<MyElement> 
    <Ids> 
     <int>1</int> 
     <int>2</int> 
    </Ids> 
</MyElement> 

Ich finde es schwierig, in gehen zu analysieren. Ich habe das versucht folgende

type MyElement struct { 
    Ids int[] 
} 

oder sogar

type Ids struct { 
    id int[] `xml:"int"` 
} 

type MyElement struct { 
    Ids Ids 
} 

Aber es nie abgeholt bekommen.

Die Schwierigkeit besteht darin, dass die Elemente alle int heißen und nur einen int-Wert anstelle des üblichen Schlüssel/Wert-Paares speichern.

Antwort

2

Sie müssen den Pfad der int Elemente angeben:

type MyElement struct { 
    Ids []int `xml:"Ids>int"` 
} 

https://play.golang.org/p/HfyQzOiSqa

Sie können dies auch tun, um nicht "Ids"

type MyElement struct { 
    Ids []int `xml:">int"` 
} 

zu wiederholen Diese Funktion erwähnt wird in xml.Unmarshal's documentation:

  • Wenn das XML-Element ein Unterelement enthält, deren Namen übereinstimmt das Präfix eines Tags formatiert als „a“ oder „a> b> c“ Abstellungs in die XML-Struktur herabkommen wird für Elemente mit der Suche Vornamen und werden die innersten Elemente diesem Feld zuordnen. Ein Tag, das mit ">" beginnt, entspricht einem Startpunkt mit dem Feldnamen gefolgt von ">".