package main
import (
"encoding/xml"
"fmt"
"io/ioutil"
"os"
)
type Post struct { //带结构标签,反引号来包围字符串
XMLName xml.Name `xml:"post"`
Id string `xml:"id,attr"`
Content string `xml:"content"`
Author string `xml:"author"`
Xml string `xml:",innerxml"`
}
type Author struct {
Id string `xml:"id,attr"`
Name string `xml:chardata`
}
func main() {
//打开指定得xml文档
xmlFile, err := os.Open("main/post.xml")
//检查是否有错误
if err != nil {
fmt.Println("Error opening XML file!")
//如果打开文档发生错位直接退出
return
}
//关闭文档 注意defer
defer xmlFile.Close()
//从xml文档中读取数据
xmlData,err := ioutil.ReadAll(xmlFile)
//错误判断
if err != nil {
fmt.Println("Error reading XML data:", err)
return
}
//申明一个Post变量
var post Post
//将xml数据封装到结构体
xml.Unmarshal(xmlData,&post)
//打印文件
fmt.Println(post)
}
xml文件: post.xml
<?xml version="1.0" encoding="utf-8" ?>
<post id="1">
<content>Hello World</content>
<author id="2">Sau Sheong</author>
</post>