如何在Go中使用XML?

王林
發布: 2023-05-11 16:04:36
原創
1337 人瀏覽過

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

1. 匯入 XML 套件

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

import "encoding/xml"
登入後複製

2. 建立XML結構體

在Go中,使用結構體來表示XML資料。這裡以一個範例XML作為範例。

   Harry Potter J.K. Rowling 2005 29.99   Learning XML Erik T. Ray 2003 39.95  
登入後複製

可以建立以下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(`   Harry Potter J.K. Rowling 2005 29.99   Learning XML Erik T. Ray 2003 39.95  `) 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名稱(如)和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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!