属性と浮動小数点値を含む XML 要素を Go 構造体にアンマーシャルする方法

Susan Sarandon
リリース: 2024-10-24 02:40:29
オリジナル
868 人が閲覧しました

How to Unmarshal XML Elements with Attributes and Floating-Point Values into Go Structs?

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

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!