XML 要素を Go 構造体にアンマーシャリングする
属性と浮動小数点値を含む次の XML 要素について考えてみましょう。
<thing prop="1"> 1.23 </thing> <thing prop="2"> 4.56 </thing>
この XML を Go 構造体にアンマーシャリングするには、次の 2 つの設計アプローチを使用できます。
XMLName プロパティを使用する:
<code class="go">type ThingElem struct { XMLName xml.Name `xml:"thing"` Prop int `xml:"prop,attr"` Value float64 // ??? }</code>
この場合の場合、XMLName フィールドは、構造体が「モノ」の XML 要素を表すことを指定するために使用されます。ただし、このフィールドを構造体定義に必ず含める必要はありません。
XMLName プロパティなし:
<code class="go">type ThingElem struct { Prop int `xml:"prop,attr"` Value float64 // ??? } type ThingWrapper struct { T ThingElem `xml:"thing"` }</code>
このアプローチでは、ThingElem 構造体は内部でアンマーシャリングされます。ラッパー構造体 ThingWrapper。ラッパー構造体の xml:"thing" タグは、ThingElem が "thing" XML 要素を表すことを指定します。
値フィールド タイプの決定:
値フィールドでは、XML 要素には浮動小数点値を表す文字データ (テキスト コンテンツ) が含まれていることに注意することが重要です。これを正しくアンマーシャリングするには、次の変更を行う必要があります:
値からスペースを削除:
XML データには浮動小数点値内にスペースが含まれています。これらのスペースは、アンマーシャリングする前に削除する必要があります。
「,chardata」アノテーションを使用する:
XML タグの内容は、次の「,chardata」アノテーションを使用して参照できます。構造体フィールド定義:
<code class="go">Value float64 `xml:",chardata"`</code>
これらの変更を組み込み、XML データからスペースが確実に削除されるようにすることで、上記の設計アプローチのいずれかを使用して、指定された XML を Go 構造体にアンマーシャリングできます。
以上が属性と浮動小数点値を含む XML 要素を Go 構造体にアンマーシャルする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。