2015-01-21 150 views
2

我正在使用golang动态更改xml节点?有些结构是如下所示:如何动态更改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节点?

回答

3

这里有一个工作示例:Playground

xml.Name具有包含该标签名称的字段Local

如果您将Local的值设置为"myrow",它将输出结构为<myrow r="..."></myrow>

另外,您必须从XMLName字段中删除xml标记。当xml包看到这个标签(xml:"row")时,它会自动命名标签"row",无论包含什么XMLName

1

如果您删除结构的XMLName字段的注释,则可以更改其值以调整结构的编组结构。例如:

r.XMLName = xml.Name{"", "myrow"} 

将使用空名称空间将元素名称设置为myrow。注释需要被删除,因为它将优先于值XMLName

你可以在这里看到这个结果:http://play.golang.org/p/3hGbE5WO8D