2015-01-21 151 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