属性と浮動小数点値を使用した XML 要素のアンマーシャリング
属性と浮動小数点値を使用して XML 要素をアンマーシャリングするには、次のように定義します。対応するフィールドを含む Go 構造体。ただし、xml.Name プロパティの使用に関してはいくつかの考慮事項があります。
提供された XML 要素内:
<code class="xml"><thing prop="1"> 1.23 </thing></code>
ThingElem 構造体には次のプロパティが必要です:
オプション 1: XMLName
を使用する このオプションでは、xml.Name フィールドを ThingElem 構造体に追加できます。このフィールドは通常、XML 構造があいまいな場合に使用されます。この場合、構造体が Thing 要素に対応していることは明らかであるため、これは必要ありません。
<code class="go">type ThingElem struct { XMLName xml.Name `xml:"thing"` // Do I even need this? Prop int `xml:"prop,attr"` Value float // ??? }</code>
オプション 2: XMLName なし
曖昧さがないためXML 構造では、xml.Name フィールドを省略できます。
<code class="go">type ThingElem struct { Prop int `xml:"prop,attr"` Value float // ??? }</code>
浮動小数点値のアンマーシャリング
浮動小数点値を正しくアンマーシャリングするには、以下を行う必要があります。 XML 内にスペースが含まれていないことを確認してください。この例では、値は 1.23 ですが、スペースを削除して 1.23 として保存することをお勧めします。
ネストされたデータのアンマーシャリング
次のようにしてネストされたデータをアンマーシャリングすることもできます。ラッパー構造体を定義します。たとえば、XML には複数の Thing 要素が含まれています。これらをアンマーシャリングするには、ThingWrapper 構造体を定義します。
<code class="go">type ThingWrapper struct { T ThingElem `xml:"thing"` }</code>
完全なコード例
提供された XML データをアンマーシャリングする完全なコード例を次に示します。
<code class="go">package main import ( "encoding/xml" "fmt" ) type Root struct { Things []Thing `xml:"thing"` } type Thing struct { Prop int `xml:"prop,attr"` Value float64 `xml:",chardata"` } func main() { data := `<root><thing prop="1">1.23</thing><thing prop="2">4.56</thing></root>` thing := &Root{} err := xml.Unmarshal([]byte(data), thing) if err != nil { fmt.Println(err) return } fmt.Println(thing) }</code>
このコードは、prop 属性と浮動小数点値を含む、解析された XML データを出力します。
以上が属性および浮動小数点値を含む XML 要素をアンマーシャリングするために XMLName を使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。