ホームページ >バックエンド開発 >Golang >Go でマーシャリング中に XML 要素名を動的に設定するにはどうすればよいですか?

Go でマーシャリング中に XML 要素名を動的に設定するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-02 08:41:13338ブラウズ

How Can I Dynamically Set XML Element Names During Marshaling in Go?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。