Heim > Artikel > Backend-Entwicklung > Wie verwende ich XML in Go?
XML ist ein gängiges Datenaustauschformat. In der Go-Sprache gibt es viele Möglichkeiten, XML zu bearbeiten. Hier erfahren Sie, wie Sie XML in Go verwenden.
Zuerst müssen Sie die Standardbibliothek encoding/xml
in das Go-Programm importieren. encoding/xml
标准库。
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
中。第一个参数是要编组的结构体,第二个参数是在每一行前要用的缩进字符串,第三个参数是在每个元素之间使用的字符串。
在结构体中,可以使用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数据自动填充。
使用以上步骤可以在Go中使用XML。首先需要导入encoding/xml
rrreee
xml.Unmarshal()
Parst XML-Daten in eine Struktur und speichert das Ergebnis in der Variablen bookstore
. #🎜🎜##🎜🎜#4. Ordnen Sie die Struktur in XML an.#🎜🎜##🎜🎜#Sie können wiederum die Funktion xml.Marshal()
verwenden, um die Struktur in XML-Daten zumarshalieren . #🎜🎜#rrreee#🎜🎜#Die Funktion xml.MarshalIndent()
marshallt die Struktur bookstore
in XML-Daten und speichert das Ergebnis in der Variablen xml_data Code>. Der erste Parameter ist die zu gruppierende Struktur, der zweite Parameter ist die eingerückte Zeichenfolge, die vor jeder Zeile verwendet werden soll, und der dritte Parameter ist die Zeichenfolge, die zwischen den einzelnen Elementen verwendet werden soll. #🎜🎜##🎜🎜#5. XML-Elemente manipulieren #🎜🎜##🎜🎜#In der Struktur können Sie XML-Namen (z. B. <code>463aef0d2da08708f472268a99530dbe
) und XML-Attribute (z. B als category
) als Beschriftung des Strukturfeldes. #🎜🎜#rrreee#🎜🎜#Beim Parsen von XML werden die Werte der Strukturfelder automatisch basierend auf den XML-Daten ausgefüllt. #🎜🎜##🎜🎜#6. Zusammenfassung#🎜🎜##🎜🎜#Verwenden Sie die oben genannten Schritte, um XML in Go zu verwenden. Zuerst müssen Sie die Bibliothek encoding/xml
importieren und dann eine Struktur zur Darstellung von XML-Daten definieren. XML-Daten können in diese Struktur geparst werden, oder diese Struktur kann zum Marshallen von XML-Daten verwendet werden. Um XML-Elemente zu bedienen, müssen Sie den Namen und die Attribute des XML-Elements im Strukturfeld-Tag verwenden. #🎜🎜#Das obige ist der detaillierte Inhalt vonWie verwende ich XML in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!