Go での属性と浮動小数点値を使用した XML 要素のアンマーシャリング
指定された XML 要素を、属性と浮動小数点値を使用してアンマーシャリングするには浮動小数点値の場合は、XML 構造に対応する Go 構造体を定義する必要があります。
構造体の定義
で指定された 2 つの構造体の定義を考えてみましょう。質問:
最初の定義:
<code class="go">type ThingElem struct { Prop int `xml:"prop,attr"` Value float // ??? } type ThingWrapper struct { T ThingElem `xml:"thing"` }</code>
2 番目の定義:
<code class="go">type ThingElem struct { XMLName xml.Name `xml:"thing"` // Do I even need this? Prop int `xml:"prop,attr"` Value float // ??? }</code>
オプションのアドレス指定:
最終解決策:
<code class="go">type Thing struct { Prop int `xml:"prop,attr"` Value float64 `xml:",chardata"` } type Root struct { Things []Thing `xml:"thing"` }</code>
このソリューションでは、Thing 構造体は次のことを表します。単一の XML 要素であり、ルート構造体は、XML ルート要素をアンマーシャリングするための Thing 構造体のスライスを保持するコンテナーです。
コード例:
<code class="go">package main import ( "encoding/xml" "fmt" ) const xmlData = ` <root> <thing prop="1">1.23</thing> <thing prop="2">4.56</thing> </root> ` func main() { root := &Root{} if err := xml.Unmarshal([]byte(xmlData), root); err != nil { fmt.Println(err) return } fmt.Println(root.Things) }</code>
このコードは、浮動小数点値からのスペースの削除など、XML 要素を Go 構造体にアンマーシャリングする方法を示しています。
以上がGo で属性と浮動小数点値を使用して XML 要素をアンマーシャリングする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。