go语言解析xml数据与解析json的原理相似,不同的是解析xml不能用map的方法,用到xml.Unmarshal(data []byte, v interface{})。用之前需要import “encoding/xml”。下面举个例子

一、首先架设xml数据(rss文件举例):

rssStr:=`
    <?xml version="1.0" encoding="UTF-8"?>
    <rss xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
        <channel>
            <title>papa森</title>
            <link>http://papasen.com</link>
            <description>嘤嘤嘤</description>
            <language>zh-CN</language>
            <item>
                <title><![CDATA[这是个文章标题]]</title>
                <link>https://papasen.com/?p=272</link>
                <content:encoded><![CDATA[嘤嘤嘤这是我写的文章内容]]</content:encoded>
                <pubData>2020-3-25 1:27:31</pubData>
            
            </item>

        </channel>
    </rss>
`

二、构建一个结构体,xml数据解析成结构体:

type Rss struct {
	XMLName        xml.Name `xml:"rss"`
	WebTitle       string   `xml:"channel>title"`
	WebLink        string   `xml:"channel>link"`
	WebDescription string   `xml:"channel>description"`
	Language       string   `xml:"channel>language"`
	Items          []Item   `xml:"channel>item"`
}
type Item struct {
	Title   string `xml:"title"`
	Link    string `xml:"Link"`
	Content string `xml:"encoded"`
	PubDate string `xml:"pubDate"`
}

三、最后直接解析:

v:=Rss{}
err:=xml.Unmarshal([]byte(rssStr),&v)
if err!=nil{
    //err
}
fmt.Printf("网站标题:%s\n网站链接:%s\n网站描述:%s\n文章标题:%s\n文章内容:%s\n",v.WebTitle,v.WebLink,v.WebDescription,v.Items[0].Title,v.Item[0].Content)

完成