次の例では:
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フィールドを取得することです... しかし、処理が困難で効果がありません。
ありがとう。