Golang marshal动态xml元素名称

前端之家收集整理的这篇文章主要介绍了Golang marshal动态xml元素名称前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
xml文件由两个元素组成.除了一个元素名称外,这些元素具有相同的结构.我试图为XMLName属性设置一个值,但这不起作用.

XML:

<!-- first element -->
<PERSON>
  <ELEM1>...</ELEM1>
  <ELEM2>...</ELEM2>
  <ELEM3>...</ELEM3>
  <ELEM4>...</ELEM4>
</PERSON>


<!-- second element -->
<SENDER>
  <ELEM1>...</ELEM1>
  <ELEM2>...</ELEM2>
  <ELEM3>...</ELEM3>
  <ELEM4>...</ELEM4>
</SENDER>

是否可以定义一个结构,使元素名称是动态的?

type Person struct {
    XMLName string `xml:"???"` // How make this dynamic?
    e1 string `xml:"ELEM1"`
    e2 string `xml:"ELEM2"`
    e3 string `xml:"ELEM3"`
    e4 string `xml:"ELEM4"`
}
documentation中,它表示XMLName字段必须是xml.Name类型.
type Person struct {
    XMLName xml.Name
    E1 string `xml:"ELEM1"`
    // ...
}

通过xml.Name的Local字段设置元素名称

person := Person { 
    XMLName: xml.Name { Local: "Person" },// ...
}

(此外,必须导出E1-E4才能包含在XML输出中).

游乐场示例:http://play.golang.org/p/bzSutFF9Bo

猜你在找的Go相关文章