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"` }
在文档中,该XMLName字段必须为类型xml.Name。
XMLName
xml.Name
type Person struct { XMLName xml.Name E1 string `xml:"ELEM1"` // ... }
通过以下Local字段设置元素名称xml.Name:
Local
person := Person { XMLName: xml.Name { Local: "Person" }, // ... }
(此外,必须导出E1-E4才能包含在XML输出中)。
游乐场示例:http://play.golang.org/p/bzSutFF9Bo