XML 編組中的動態元素名稱
XML 文件通常包含結構相似但名稱不同的元素。為了在 Go 中處理這個問題,您可能想知道是否可以在 XML 封送過程中動態修改元素名稱。
結構體定義
讓我們考慮以下 XML文檔,其中包含兩個元素“PERSON”和“SENDER”包含相同的元素但具有不同的屬性名稱:
<PERSON> <ELEM1>...</ELEM1> <ELEM2>...</ELEM2> <ELEM3>...</ELEM3> <ELEM4>...</ELEM4> </PERSON> <SENDER> <ELEM1>...</ELEM1> <ELEM2>...</ELEM2> <ELEM3>...</ELEM3> <ELEM4>...</ELEM4> </SENDER>
最初,您可以嘗試定義這樣的結構體,其中元素名稱是靜態設定的:
type Person struct { XMLName string `xml:"PERSON"` // Static element name E1 string `xml:"ELEM1"` E2 string `xml:"ELEM2"` E3 string `xml:"ELEM3"` E4 string `xml:"ELEM4"` }
動態元素名稱
要讓元素名稱動態化,您需要使用 xml.Name 類型而不是string:
type Person struct { XMLName xml.Name E1 string `xml:"ELEM1"` E2 string `xml:"ELEM2"` E3 string `xml:"ELEM3"` E4 string `xml:"ELEM4"` }
現在,您可以使用 xml 的 Local 欄位動態設定元素名稱。 Name:
person := Person{ XMLName: xml.Name{Local: "Person"}, // ... Set other fields }
這允許您根據以下內容動態產生XML 元素名稱你的特定資料
範例
可以在Go Playground 上找到一個工作範例:http://play.golang.org/p/bzSutFF9Bo。
透過此技術,您可以建立處理具有不同名稱的 XML 元素的結構,從而為 XML 處理提供靈活性和可擴展性程式碼。
以上是如何在 Go 中編組期間動態設定 XML 元素名稱?的詳細內容。更多資訊請關注PHP中文網其他相關文章!