在学习Go语言中,有关于Go处理xml文件的处理.在这里记录一下
在Go语言中使用ioutil库进行文件的处理是特别方便的事情,这里使用Goland进行开发的示例
首先创建工程xml ,如下图所示
在main.go中对A.xml 的内容进行读取 A.xml 的内容如下:
<?xml version="1.0" encoding="utf-8" ?>
<peoples version="0.9">
<people id="123">
<name> ZH </name>
<address>深圳宝安</address>
</people>
<people id="124">
<name> YQ </name>
<address>深圳福田</address>
</people>
</peoples>
解析A.xml的代码如下:
package main
import (
"encoding/xml"
"fmt"
"io/ioutil"
)
type Peoples struct {
XMLName xml.Name `xml:"peoples"`
Version string `xml:"version,attr"` //xml的属性 attr
Peos []People `xml:"people"`
}
type People struct {
XMLName xml.Name `xml:"people"`
ID int `xml:"id,attr"`//xml的属性 attr
Name string `xml:"name"`
Address string `xml:"address"`
sex string `xml:"sex"`
}
func main() {
peo := new(People)
b,err := ioutil.ReadFile("./A.xml")
fmt.Println(string(b))
fmt.Println("111: ",err)
err = xml.Unmarshal(b,peo)//使用Ummarshal 对b内容进行解析
fmt.Println("222",err)
fmt.Println(peo)
网B.xml 中写入数据
b := Peoples{Version:"0.9"}
var text = `<Peoples></Peoples>`
peo := People{ID:125,Name:"LHH",Address:"ccsu",sex:"male"}
b.Peos = append(b.Peos,peo)
xml.Unmarshal([]byte(text),b)
wrb ,_:= xml.MarshalIndent(b,""," ")
wrb = append([]byte(xml.Header),wrb...)
ioutil.WriteFile("./B.xml",wrb,0666)
最后写入成功