xml文件由两个元素组成。除了一个元素名称外,这些元素具有相同的结构。我试图为XMLName属性设置一个值,但这没有用。
<!-- 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"`
}
答案 0 :(得分:6)
在documentation中,它表示XMLName
字段必须是xml.Name
类型。
type Person struct {
XMLName xml.Name
E1 string `xml:"ELEM1"`
// ...
}
通过Local
的{{1}}字段设置元素名称:
xml.Name
(此外,必须导出E1-E4才能包含在XML输出中)。