如何从golang中的XML文件中提取多个字段
给定以下XML文件:如何从golang中的XML文件中提取多个字段,xml,go,Xml,Go,给定以下XML文件: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE tv SYSTEM "xmltv.dtd"> <zoo> <annimal id="1"> <display-name>hyena</display-name> </annimal> <annimal id="2"> <display-name>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE tv SYSTEM "xmltv.dtd">
<zoo>
<annimal id="1">
<display-name>hyena</display-name>
</annimal>
<annimal id="2">
<display-name>lion</display-name>
<icon src="https://en.wikipedia.org/wiki/File:Lion_waiting_in_Namibia.jpg"/>
</annimal>
<annimal id="3">
<display-name>zebra</display-name>
</annimal>
</zoo>
通常,在发布关于堆栈溢出的问题之前,您至少应该尝试一下,但由于这是您的第一篇帖子,我不想无礼,所以这里有一个完整的答案 使用你可以很容易地做到这一点 下面是您描述的行为的一个示例:
package main
import (
"encoding/xml"
"fmt"
"log"
)
type Zoo struct {
XMLName xml.Name `xml:"zoo"`
Animals []Animal `xml:"animal"`
}
type Animal struct {
XMLName xml.Name `xml:"animal"`
ID uint `xml:"id,attr"`
DisplayName DisplayName
Icon Icon
}
type DisplayName struct {
XMLName xml.Name `xml:"display-name"`
Value string `xml:",chardata"`
}
type Icon struct {
XMLName xml.Name `xml:"icon"`
Source string `xml:"src,attr"`
}
var data []byte = []byte(`
<zoo>
<animal id="1">
<display-name>hyena</display-name>
</animal>
<animal id="2">
<display-name>lion</display-name>
<icon src="https://en.wikipedia.org/wiki/File:Lion_waiting_in_Namibia.jpg"/>
</animal>
<animal id="3">
<display-name>zebra</display-name>
</animal>
</zoo>`)
func main() {
var zoo Zoo
if err := xml.Unmarshal(data, &zoo); err != nil {
log.Fatal(err)
}
for _, animal := range zoo.Animals {
fmt.Printf("%d,%s,%s\n", animal.ID, animal.DisplayName.Value, animal.Icon.Source)
}
}
您可以在上试用,谢谢!很抱歉,我正在查看该文件,但无法获得正确的结构。啊,那么您应该要求我们帮助您编写代码,我们会修复错误:)但很高兴我能提供帮助!
package main
import (
"encoding/xml"
"fmt"
"log"
)
type Zoo struct {
XMLName xml.Name `xml:"zoo"`
Animals []Animal `xml:"animal"`
}
type Animal struct {
XMLName xml.Name `xml:"animal"`
ID uint `xml:"id,attr"`
DisplayName DisplayName
Icon Icon
}
type DisplayName struct {
XMLName xml.Name `xml:"display-name"`
Value string `xml:",chardata"`
}
type Icon struct {
XMLName xml.Name `xml:"icon"`
Source string `xml:"src,attr"`
}
var data []byte = []byte(`
<zoo>
<animal id="1">
<display-name>hyena</display-name>
</animal>
<animal id="2">
<display-name>lion</display-name>
<icon src="https://en.wikipedia.org/wiki/File:Lion_waiting_in_Namibia.jpg"/>
</animal>
<animal id="3">
<display-name>zebra</display-name>
</animal>
</zoo>`)
func main() {
var zoo Zoo
if err := xml.Unmarshal(data, &zoo); err != nil {
log.Fatal(err)
}
for _, animal := range zoo.Animals {
fmt.Printf("%d,%s,%s\n", animal.ID, animal.DisplayName.Value, animal.Icon.Source)
}
}
1,hyena,
2,lion,https://en.wikipedia.org/wiki/File:Lion_waiting_in_Namibia.jpg
3,zebra,