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输出中).