如何动态更改xml节点?

时间:2015-01-21 10:18:21

标签: xml go

我正在使用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节点?

2 个答案:

答案 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