2

私はWebfactionAPIを使用しており、セッションID(12345abcde ...以下)を取得するために応答をアンマーシャリングしようとしています。

複数のフィールド(つまり、params> param)の下にネストされている場合、特定の値にアクセスするにはどうすればよいですか?

以下のコードはhttp://play.golang.org/p/krG4_fXVkaにあります

package main

import ("encoding/xml"
        "fmt"
        )

type Result struct {
        XMLName xml.Name `xml:"methodResponse"`
        Values []string `xml:"params>param>value"`
}

func main() {
data := `
    <methodResponse>
<params>
    <param>
        <value><array><data>
            <value><string>12345abcde12345abcde12345</string></value>
            <value><struct>
                <member>
                    <name>username</name>
                    <value><string>trex</string></value>
                </member>
                <member>
                    <name>home</name>
                    <value><string>/home</string></value>
                </member>
                <member>
                    <name>mail_server</name>
                    <value><string>Mailbox1</string></value>
                </member>
                <member>
                    <name>web_server</name>
                    <value><string>Web12</string></value>
                </member>
                <member>
                    <name>id</name>
                    <value><int>1234</int></value>
                </member>
            </struct></value>
        </data></array></value>
    </param>
</params>

`

v := Result{}
err := xml.Unmarshal([]byte(data), &v)
if err != nil {
fmt.Printf("error: %v", err)
        return
}
fmt.Printf("XMLName: %#v\n", v.XMLName)
fmt.Printf("Values: %#v\n", v.Values)

}
4

1 に答える 1

4

あなたがやろうとしていることは 100% 明確ではありませんが、これはそれをよりよく分解しているように見えますか?

type Member struct {
    Name string `xml:"name"`
    Value string `xml:"value>string"`
}

type Result struct {
        XMLName xml.Name `xml:"methodResponse"`
        FirstValue string `xml:"params>param>value>array>data>value>string"`
        Members []Member `xml:"params>param>value>array>data>value>struct>member"`
}

解析する構造の深さはかなり狂っていることに注意してください。インデントで表示できるように書式設定するきれいなプリンターを介して XML を実行すると役立つ場合があります。

于 2012-09-17T03:10:45.023 に答える