如何动态改变xml节点?

How to dynamically change the xml node?

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

这是一个工作示例:Playground

xml.Name 有一个包含标签名称的字段 Local

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

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

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

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

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

的值

您可以在此处查看结果:http://play.golang.org/p/3hGbE5WO8D