XML是一種常見的資料交換格式。在Go語言中,操作XML有多種方法。以下將介紹如何在Go中使用XML。
首先,在Go程式中需要匯入encoding/xml
標準函式庫。
import "encoding/xml"
在Go中,使用結構體來表示XML資料。這裡以一個範例XML作為範例。
<?xml version="1.0" encoding="UTF-8"?> <bookstore> <book category="children"> <title lang="en">Harry Potter</title> <author>J.K. Rowling</author> <year>2005</year> <price>29.99</price> </book> <book category="web"> <title lang="en">Learning XML</title> <author>Erik T. Ray</author> <year>2003</year> <price>39.95</price> </book> </bookstore>
可以建立以下Go結構體來表示它:
type Bookstore struct { XMLName xml.Name `xml:"bookstore"` Books []Book `xml:"book"` } type Book struct { XMLName xml.Name `xml:"book"` Category string `xml:"category,attr"` Title string `xml:"title"` Author string `xml:"author"` Year int `xml:"year"` Price float32 `xml:"price"` }
然後,可以使用xml.Unmarshal( )
函數將XML資料解析到Go結構體中。
xml_data := []byte(`<?xml version="1.0" encoding="UTF-8"?> <bookstore> <book category="children"> <title lang="en">Harry Potter</title> <author>J.K. Rowling</author> <year>2005</year> <price>29.99</price> </book> <book category="web"> <title lang="en">Learning XML</title> <author>Erik T. Ray</author> <year>2003</year> <price>39.95</price> </book> </bookstore>`) var bookstore Bookstore err := xml.Unmarshal(xml_data, &bookstore) if err != nil { fmt.Println("error: ", err) return } fmt.Println(bookstore)
xml.Unmarshal()
將XML資料解析為結構體,並將結果儲存在bookstore
變數中。
反過來,可以用xml.Marshal()
函數將結構體編組為XML資料。
bookstore := Bookstore { XMLName: xml.Name{Local: "bookstore"}, Books: []Book{ Book{ Category: "children", Title: "Harry Potter", Author: "J.K. Rowling", Year: 2005, Price: 29.99, }, Book{ Category: "web", Title: "Learning XML", Author: "Erik T. Ray", Year: 2003, Price: 39.95, }, }, } xml_data, err := xml.MarshalIndent(bookstore, "", " ") if err != nil { fmt.Println("error: ", err) } fmt.Printf("%s ", xml_data)
xml.MarshalIndent()
函數將bookstore
結構體編組為XML數據,並將結果儲存在變數xml_data
#中。第一個參數是要編組的結構體,第二個參數是每一行前要用的縮排字串,第三個參數是在每個元素之間使用的字串。
在結構體中,可以使用XML名稱(如<book>
)和XML屬性(如category
)作為結構體欄位的標籤。
type Book struct { XMLName xml.Name `xml:"book"` Category string `xml:"category,attr"` Title string `xml:"title"` Author string `xml:"author"` Year int `xml:"year"` Price int `xml:"price"` }
當解析XML時,結構體欄位的值會根據XML資料自動填入。
使用上述步驟可以在Go中使用XML。首先需要導入encoding/xml
庫,然後定義一個結構體來表示XML資料。可以將XML資料解析到該結構體中,也可以使用該結構體編組為XML資料。操作XML元素需要在結構體欄位標籤中使用XML元素的名稱和屬性。
以上是如何在Go中使用XML?的詳細內容。更多資訊請關注PHP中文網其他相關文章!