XML マーシャリングにおける動的要素名
XML ドキュメントには、類似した構造を持つが名前が異なる要素が含まれることがよくあります。 Go でこれを処理するには、XML マーシャリング中に要素名を動的に変更できるかどうか疑問に思うかもしれません。
Struct Definition
次の 2 つの XML ドキュメントを考えてみましょう。要素「PERSON」と「SENDER」には、異なる要素が含まれる同じ要素が含まれます。 names:
<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"` }
動的要素名
要素名を動的にするには、 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 要素名を動的に生成できます。あなたに関する特定のデータmarshaling.
例
実際の例は Go Playground にあります: http://play.golang.org/p/bzSutFF9Bo.
この手法を使用すると、さまざまな名前を持つ XML 要素を処理する構造体を作成でき、XML 処理に柔軟性と拡張性を提供できます。コード。
以上がGo でマーシャリング中に XML 要素名を動的に設定するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。