我正在使用golang动态更改xml节点?一些结构如下:
type Row struct {
XMLName xml.Name `xml:"row"`
R string `xml:"r,attr,omitempty"`
}
在xml.Marshal()之后,输出可能是"<row r="123"></row>"
但是如果某些条件成立,我想将"<row></row>"
更改为"<myrow></myrow>"
。
如何使用golang动态更改xml节点?
答案 0 :(得分:3)
以下是一个有效的例子:Playground
xml.Name有一个字段Local
,其中包含标记的名称。
如果您将Local
的值设置为"myrow"
,则会将结构输出为<myrow r="..."></myrow>
。
此外,您必须从XMLName
字段中删除xml标记。当xml包看到此标记(xml:"row"
)时,无论"row"
包含什么,它都会自动为标记XMLName
命名。
答案 1 :(得分:1)
如果删除结构的XMLName
字段上的注释,则可以更改其值以调整结构的编组方式。例如:
r.XMLName = xml.Name{"", "myrow"}
使用空命名空间将元素名称设置为myrow
。需要删除注释,因为它将优先于XMLName
的值。
您可以在此处查看此结果:http://play.golang.org/p/3hGbE5WO8D