Golang XML编码两个相同的属性

我不得不使用一些糟糕的设计XML,我试图将这个XML读入Go结构。下面是一些样本数据:Golang XML编码两个相同的属性

<?xml version="1.0" encoding="UTF-8"?> 

<dictionary>

<direction from="lojban" to="English">

<valsi word="cipni" type="gismo">

<rafsi>cpi</rafsi>

<definition>x1 is a bird of species x2</definition>

<notes></notes>

</valsi>

...

</direction>

<direction from="English" to="lojban">

<nlword word="eagle" valsi="atkuila" />

<nlword word="hawk" sense="bird" valsi="aksiptrina" />

...

</direction>

</dictionary>

我的问题是,我可以在节点或者是因为它们都包含属性“词”读:

main.NLWord field "Word" with tag "word,attr" conflicts with field "Valsi" with tag "word,attr" 

我开始想解组可能是错误的因为我理想地以不同的方式构造数据。我应该使用其他方法读取XML并手动构建数据结构?

type Valsi struct { 

Word string `xml:"word,attr"`

Type string `xml:"type,attr"`

Def string `xml:"definition"`

Notes string `xml:"notes"`

Class string `xml:"selmaho"`

Rafsi []string `xml:"rafsi"`

}

//Whoever made this XML structure needs to be painfully taught a lesson...

type Collection struct {

From string `xml:"from"`

To string `xml:"to"`

Valsi []Valsi `xml:"valsi"`

}

type Vlaste struct {

Direction []Collection `xml:"direction"`

}

var httpc = &http.Client{}

func parseXML(data []byte) Vlaste {

vlaste := Vlaste{}

err := xml.Unmarshal(data, &vlaste)

if err != nil {

fmt.Println("Problem Decoding!")

log.Fatal(err)

}

return vlaste

}

回答:

我可能没有抓住你的问题是什么,但以下结构工作正常,我 (your modified example on play):

type Valsi struct { 

Word string `xml:"word,attr"`

Type string `xml:"type,attr"`

Def string `xml:"definition"`

Notes string `xml:"notes"`

Class string `xml:"selmaho"`

Rafsi []string `xml:"rafsi"`

}

type NLWord struct {

Word string `xml:"word,attr"`

Sense string `xml:"sense,attr"`

Valsi string `xml:"valsi,attr"`

}

type Collection struct {

From string `xml:"from,attr"`

To string `xml:"to,attr"`

Valsi []Valsi `xml:"valsi"`

NLWord []NLWord `xml:"nlword"`

}

type Vlaste struct {

Direction []Collection `xml:"direction"`

}

在这种结构中,Collection可以有Valsi值以及NLWord值。 然后,您可以根据From/ToValsiNLWord的长度来决定如何处理数据。

以上是 Golang XML编码两个相同的属性 的全部内容, 来源链接: utcz.com/qa/263784.html

回到顶部