我的XML包含一個預定義元素的數組,但我無法拿起數組。下面是XML結構:如何將嵌套的XML元素解組到數組中?
var xml_data = `<Parent>
<Val>Hello</Val>
<Children>
<Child><Val>Hello</Val></Child>
<Child><Val>Hello</Val></Child>
<Child><Val>Hello</Val></Child>
</Children>
</Parent>`
以下是完整的代碼和這裏是playground link。運行此操作將啓動Parent.Val,但不啓動Parent.Children。
package main
import (
"fmt"
"encoding/xml"
)
func main() {
container := Parent{}
err := xml.Unmarshal([]byte(xml_data), &container)
if err != nil {
fmt.Println(err)
} else {
fmt.Println(container)
}
}
var xml_data = `<Parent>
<Val>Hello</Val>
<Children>
<Child><Val>Hello</Val></Child>
<Child><Val>Hello</Val></Child>
<Child><Val>Hello</Val></Child>
</Children>
</Parent>`
type Parent struct {
Val string
Children []Child
}
type Child struct {
Val string
}
編輯:我簡化了這個問題here。基本上我不能解組任何數組,而不僅僅是預定義的結構。以下是更新的工作代碼。在那個例子中,只有一個項目在容器界面中結束。
func main() {
container := []Child{}
err := xml.Unmarshal([]byte(xml_data), &container)
if err != nil {
fmt.Println(err)
} else {
fmt.Println(container)
}
/*
ONLY ONE CHILD ITEM GETS PICKED UP
*/
}
var xml_data = `
<Child><Val>Hello</Val></Child>
<Child><Val>Hello</Val></Child>
<Child><Val>Hello</Val></Child>
`
type Child struct {
Val string
}
謝謝。您能否告訴我從我的編輯中看到簡化示例中的樣子?我正在應用您的解決方案,但不起作用。這裏是操場:https://play.golang.org/p/cXG6prczVK – believesInSanta
根據你解釋的原則,第一個例子應該工作 – believesInSanta
我相信在這種情況下,問題可能是,XML必須只有一個頂部-level元素 - 即你的XML輸入在第二個例子中是無效的XML – petrkotek