xml - Go 中使用嵌套 XML-RPC 解码组

标签 xml go xml-rpc unmarshalling

我正在使用 Webfaction API 并尝试解码他们的响应以获取 session 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)

}

最佳答案

不是 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"`
}

请注意,您的解析结构具有相当疯狂的深度。可能有助于通过 pretty-print 运行 XML,该打印机将其格式化为您可以看到的缩进。

关于xml - Go 中使用嵌套 XML-RPC 解码组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12451898/

相关文章:

python - Kivy 和 XML RPC

java - jaxb2-maven-plugin 通过命名空间创建包

java - 使用 FileProvider 处理 XML 文件的数据

javascript - 如何在 js 或 jquery 中迭代此 XML API 响应

go - 如何将外部可执行文件添加到 Go 项目

amazon-web-services - 在 AWS Application Load Balancer 上使用 Go 时,WebSocket 连接失败并出现 301

python - 如何在 Odoo 12 中使用 Python XML-RPC 注册支付

java - 使用java更改FAB( float 操作按钮)srcCompat

database - GO 打开本地 postgres 连接

magento - 如何获取Magento商店货币