首頁 >後端開發 >Golang >如何在Go中使用XML?

如何在Go中使用XML?

王林
王林原創
2023-05-11 16:04:361431瀏覽

XML是一種常見的資料交換格式。在Go語言中,操作XML有多種方法。以下將介紹如何在Go中使用XML。

1. 匯入 XML 套件

首先,在Go程式中需要匯入encoding/xml標準函式庫。

import "encoding/xml"

2. 建立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"`
}

3. 將XML解析到結構體中

然後,可以使用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變數中。

4. 將結構體編組為XML

反過來,可以用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#中。第一個參數是要編組的結構體,第二個參數是每一行前要用的縮排字串,第三個參數是在每個元素之間使用的字串。

5. 操作XML元素

在結構體中,可以使用XML名稱(如463aef0d2da08708f472268a99530dbe)和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資料自動填入。

6. 總結

使用上述步驟可以在Go中使用XML。首先需要導入encoding/xml庫,然後定義一個結構體來表示XML資料。可以將XML資料解析到該結構體中,也可以使用該結構體編組為XML資料。操作XML元素需要在結構體欄位標籤中使用XML元素的名稱和屬性。

以上是如何在Go中使用XML?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn