Go实现对XML的读取和修改
package main
import (
"encoding/xml"
"fmt"
"os"
)
// 假设XML结构如下:
// <?xml version="1.0" encoding="UTF-8"?>
// <root>
// <item id="1">Item 1</item>
// <item id="2">Item 2</item>
// </root>
// Item 定义了XML中item的结构
type Item struct {
XMLName xml.Name `xml:"item"`
Id string `xml:"id,attr"`
Content string `xml:",chardata"`
}
// Root 定义了XML中root的结构
type Root struct {
XMLName xml.Name `xml:"root"`
Items []Item `xml:"item"`
}
func main() {
// 读取XML文件
file, err := os.Open("example.xml")
if err != nil {
fmt.Println("Error opening file:", err)
return
}
defer file.Close()
var root Root
if err := xml.NewDecoder(file).Decode(&root); err != nil {
fmt.Println("Error decoding XML:", err)
return
}
// 修改XML数据
for i, item := range root.Items {
if item.Id == "1" {
root.Items[i].Content = "Updated Item 1"
}
}
// 输出修改后的XML到控制台
enc := xml.NewEncoder(os.Stdout)
enc.Indent("", " ")
if err := enc.Encode(root); err != nil {
fmt.Println("Error encoding XML:", err)
return
}
}
这段代码首先定义了与XML结构对应的Item
和Root
结构体,然后使用xml.NewDecoder
来解码XML文件,将解码后的数据存入Root
结构体实例中。接着,它遍历Items
数组,并根据Id
修改对应项的内容。最后,使用xml.NewEncoder
将修改后的XML实例重新编码并输出。这个过程展示了如何在Go中读取和修改XML数据的基本方法。
评论已关闭