Maison  >  Article  >  développement back-end  >  Comment utiliser XML dans Go ?

Comment utiliser XML dans Go ?

王林
王林original
2023-05-11 16:04:361347parcourir

XML est un format d'échange de données courant. En langage Go, il existe de nombreuses façons de manipuler XML. Voici comment utiliser XML dans Go.

1. Importez le package XML

Tout d'abord, vous devez importer la bibliothèque standard encoding/xml dans le programme 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/xmlrrreee

2. Créer une structure XML🎜🎜Dans Go, les structures sont utilisées pour représenter les données XML. Voici un exemple de XML à titre d'exemple. 🎜rrreee🎜Vous pouvez créer la structure Go suivante pour la représenter :🎜rrreee🎜3. Analysez le XML dans la structure🎜🎜Ensuite, vous pouvez utiliser la fonction xml.Unmarshal() pour analyser le XML. données en Go dans la structure. 🎜rrreee🎜xml.Unmarshal() analyse les données XML dans une structure et stocke le résultat dans la variable bookstore. 🎜🎜4. Marshall la structure en XML🎜🎜À votre tour, vous pouvez utiliser la fonction xml.Marshal() pour marshaler la structure en données XML. 🎜rrreee🎜 La fonction xml.MarshalIndent() rassemble la structure librairie en données XML et stocke le résultat dans la variable xml_data. Le premier paramètre est la structure à regrouper, le deuxième paramètre est la chaîne en retrait à utiliser avant chaque ligne et le troisième paramètre est la chaîne à utiliser entre chaque élément. 🎜🎜5. Manipuler les éléments XML🎜🎜Dans la structure, vous pouvez utiliser des noms XML (tels que 463aef0d2da08708f472268a99530dbe) et des attributs XML (tels que category) comme structure. étiquette des champs. 🎜rrreee🎜Lors de l'analyse XML, les valeurs des champs de structure seront automatiquement renseignées en fonction des données XML. 🎜🎜6. Résumé🎜🎜Utilisez les étapes ci-dessus pour utiliser XML dans Go. Tout d'abord, vous devez importer la bibliothèque encoding/xml, puis définir une structure pour représenter les données XML. Les données XML peuvent être analysées dans cette structure, ou cette structure peut être utilisée pour marshaler les données XML. Pour exploiter des éléments XML, vous devez utiliser le nom et les attributs de l'élément XML dans la balise de champ de structure. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn