ホームページ  >  記事  >  バックエンド開発  >  Go で XML を使用するにはどうすればよいですか?

Go で XML を使用するにはどうすればよいですか?

王林
王林オリジナル
2023-05-11 16:04:361346ブラウズ

XML は一般的なデータ交換形式です。 Go 言語では、XML を操作するさまざまな方法があります。 Go で XML を使用する方法は次のとおりです。

1. XML パッケージをインポートする

まず、encoding/xml 標準ライブラリを Go プログラムにインポートする必要があります。

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 に保存します。最初のパラメータはグループ化される構造、2 番目のパラメータは各行の前で使用されるインデントされた文字列、3 番目のパラメータは各要素間で使用される文字列です。

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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。