次の例では:
package main
import (
"fmt"
"encoding/xml"
)
var data = `
<data>
<text id="0" action="wake"/>
<text id="1" action="eat"/>
<text id="2" action="bathe"/>
<text id="3" action="walk"/>
</data>
`
type Result struct {
XMLName xml.Name `xml:"data"`
Action string //this is the part I want to solve
}
func main() {
res := Result{}
xml.Unmarshal(data, &res)
fmt.Printf("%#v", res)
}
取得したいのは、次の構造体です。
{XMLName: xml.Name{Space:"", Local:"data"}, Action:"eat"}
では、4 番目の要素だけでaction
属性の値を取得できますか? text
つまり、任意の要素の属性の値を取得したいのですが、その要素はその要素内の別の属性によって決定されます (id=3
この場合)。
この問題を解決するための 1 つの方法は、各text
要素をスライスとして保持する別の構造体を埋め込み、そのスライスを反復処理して、id
フィールドがの場合、3
その内部構造体のaction
フィールドを取得することです... しかし、処理が困難で効果がありません。
ありがとう。