在Go中遍历XML文档通常使用标准库中的encoding/xml
包。以下是一个简单的示例代码,演示如何遍历一个XML文档并打印出每个元素的名称和属性:
package main
import (
"encoding/xml"
"fmt"
"os"
)
func main() {
xmlData := []byte(`
<bookstore>
<book category="cooking">
<title lang="en">Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
<book category="children">
<title lang="en">Harry Potter</title>
<author>J.K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
</bookstore>
`)
type Book struct {
Title string `xml:"title"`
Author string `xml:"author"`
Year int `xml:"year"`
Price string `xml:"price"`
}
type Bookstore struct {
Books []Book `xml:"book"`
}
var bookstore Bookstore
err := xml.Unmarshal(xmlData, &bookstore)
if err != nil {
fmt.Println("Error unmarshaling XML:", err)
return
}
for _, book := range bookstore.Books {
fmt.Println("Title:", book.Title)
fmt.Println("Author:", book.Author)
fmt.Println("Year:", book.Year)
fmt.Println("Price:", book.Price)
}
}
在这个示例中,我们定义了两个结构体Book
和Bookstore
来表示XML文档中的数据结构。然后使用xml.Unmarshal
函数将XML数据解析成对应的结构体。最后通过遍历bookstore.Books
来打印每个书籍的信息。