2016-04-14 11 views
0

入力オブジェクトの出力形式を取得するために自分のMarshalXML関数を使用していますが、タグに適切な名前を付ける適切な方法が見つからないようです。読み込みタイプのプロパティXMLName属性値

レッツは、私が持っていると言う:

type RootElement struct{ 
XMLName xml.Name `xml:"hello"` 
world ChildElement `xml:"world"` 
} 

と子要素:

type ChildElement struct{ 
Value string 
} 

その後RootElementためMarshalXMLでエンコード方法が私を与えるだろう。その代わり、そのIDの

<RootElement> 
<ChildElement> 
... 
</ChildElement> 
</RootElement> 

を適切なタグ名を入れるためにEncodeTokenメソッドの独自のコールセットを作成する必要がありますが、ここでも私は持っていますモデル構造体で既に定義されているにもかかわらず、xml.Nameを定数文字列値として指定します。

XMLMarshal内に「hello」タグと「world」タグの名前を取得する方法はありますか?

答えて

0

RootElementの名前が機能しない理由はわかりませんが、ChildElementの場合は、xml:",chardata"というタグを付ける必要があります。そのため、値はノードではなくChildElementの値として検出されます。

http://play.golang.org/p/pg2vhD8wMf

package main 

import (
    "encoding/xml" 
    "fmt" 
) 

type RootElement struct{ 
    XMLName xml.Name `xml:"hello"` 
    World ChildElement `xml:"world",` 
} 

type ChildElement struct{ 
    Value string `xml:",chardata"` 
} 

func main() { 
    r := RootElement{World: ChildElement{Value: "child value"}} 
    m, err := xml.MarshalIndent(r, "", " ") 
    if err == nil { 
     fmt.Printf("%s\n", m) 
    } 
} 
関連する問題