2
我正在使用Webfaction API並嘗試解組他們的響應以獲取會話ID(12345abcde ...如下)。在嵌套的XML-RPC中使用解組組合
如何在嵌套在幾個字段(即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)
}
是否存在後處理方法並消除冗餘深度?同意瘋狂的深度將我拋棄 – Lionel
不知道你需要後處理它 - 在你運行它之後,你會得到一個直接的字符串,例如:v.FirstValue ==「12345abcde12345abcde12345」。你必須規定你想要從哪裏捕捉數據的位置......也可以放在xml標籤中。 – oxfl
謝謝,它的工作原理! http://play.golang.org/p/mfXigg32Y2 – Lionel