Golang encoding.xml 包详解
encoding/xml
包在 Go 语言中用于处理 XML 数据。这个包提供了编码和解码 XML 的功能。
- 解码 XML
解码 XML 是将 XML 数据转换为 Go 中的数据结构(如:map,struct)的过程。这可以通过 Unmarshal
函数实现。
package main
import (
"encoding/xml"
"fmt"
"log"
)
type Person struct {
XMLName xml.Name `xml:"person"`
Id string `xml:"id,attr"`
Name string `xml:"name"`
Age string `xml:"age"`
}
func main() {
xmlData := `
<person Id="123">
<name>John</name>
<age>25</age>
</person>
`
var result Person
err := xml.Unmarshal([]byte(xmlData), &result)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%+v\n", result)
}
- 编码 XML
编码 XML 是将 Go 中的数据结构(如:map,struct)转换为 XML 数据的过程。这可以通过 Marshal
函数实现。
package main
import (
"encoding/xml"
"fmt"
"log"
)
type Person struct {
XMLName xml.Name `xml:"person"`
Id string `xml:"id,attr"`
Name string `xml:"name"`
Age string `xml:"age"`
}
func main() {
person := Person{
XMLName: xml.Name{
Space: "",
Local: "person",
},
Id: "123",
Name: "John",
Age: "25",
}
output, err := xml.MarshalIndent(person, " ", " ")
if err != nil {
log.Fatal(err)
}
fmt.Println(string(output))
}
- 创建新的 XML 标签
NewName
函数可以用于创建一个新的 XML 名称。
package main
import (
"encoding/xml"
"fmt"
)
func main() {
name := xml.Name{Space: "someSpace", Local: "someLocalName"}
fmt.Printf("%v\n", name)
}
- 创建新的 XML 属性
NewAttr
函数可以用于创建一个新的 XML 属性。
package main
import (
"encoding/xml"
"fmt"
)
func main() {
attr := xml.Attr{Name: xml.Name{Local: "someAttr"}, Value: "someValue"}
fmt.Printf("%v\n", attr)
}
以上就是 encoding/xml
包的基本使用方法。这个包提供了对 XML 的强大支持,使得在 Go 语言中处理 XML 数据变得非常简单和直观。
评论已关闭