XML は一般的なデータ交換形式です。 Go 言語では、XML を操作するさまざまな方法があります。 Go で XML を使用する方法は次のとおりです。
まず、encoding/xml
標準ライブラリを Go プログラムにインポートする必要があります。
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
に保存します。最初のパラメータはグループ化される構造、2 番目のパラメータは各行の前で使用されるインデントされた文字列、3 番目のパラメータは各要素間で使用される文字列です。
構造内では、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 中国語 Web サイトの他の関連記事を参照してください。