在以下示例中:
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"}
那么我只能获取action
第四个text
元素的属性值吗?换句话说,我想获取任意元素的属性值,但该元素由该元素中的另一个属性决定(id=3
在本例中)。
解决该问题的一件事是嵌入另一个将每个text
元素保存为切片的结构,并迭代该切片,如果该id
字段是3
,那么我得到该内部结构的action
字段......但它太令人生畏且无法处理。
谢谢。