0

次の例では:

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

ありがとう。

4

1 に答える 1