解析xml標籤或者html標籤,都是xml文檔格式。要是返回的html標籤,能夠用第三方依賴庫goquery來解析。html
下面說下,解析xml標籤的格式。直接上代碼,代碼以下:數組
package main import ( "encoding/xml" "fmt" "io/ioutil" "os" ) type SConfig struct { XMLName xml.Name `xml:"config"` // 指定最外層的標籤爲config SmtpServer string `xml:"smtpServer"` // 讀取smtpServer配置項,並將結果保存到SmtpServer變量中 SmtpPort int `xml:"smtpPort"` Sender string `xml:"sender"` SenderPasswd string `xml:"senderPasswd"` Receivers SReceivers `xml:"receivers"` // 讀取receivers標籤下的內容,以結構方式獲取 } type SReceivers struct { Flag string `xml:"flag,attr"` // 讀取flag屬性 User []string `xml:"user"` // 讀取user數組 } func main() { file, err := os.Open("servers.xml") // For read access. if err != nil { fmt.Printf("error: %v", err) return } defer file.Close() data, err := ioutil.ReadAll(file) if err != nil { fmt.Printf("error: %v", err) return } v := SConfig{} err = xml.Unmarshal(data, &v) if err != nil { fmt.Printf("error: %v", err) return } fmt.Println(v) fmt.Println("SmtpServer : ",v.SmtpServer) fmt.Println("SmtpPort : ",v.SmtpPort) fmt.Println("Sender : ",v.Sender) fmt.Println("SenderPasswd : ",v.SenderPasswd) fmt.Println("Receivers.Flag : ",v.Receivers.Flag) for i,element := range v.Receivers.User { fmt.Println(i,element) } }
舉例:xml 格式以下:文件名,servers.xmlspa
<config> <smtpServer>smtp.163.com</smtpServer> <smtpPort>25</smtpPort> <sender>user@163.com</sender> <senderPasswd>123456</senderPasswd> <receivers flag="true"> <age>16</age> <user>Mike_Zhang@live.com</user> <user>test1@qq.com</user> </receivers> </config>
在代碼裏,先針對xml的格式,建立對應的struct結構體,code
type SConfig struct{ ... }
而後,讀取xml文件,讀取data,再解析對應的標籤。
執行結果以下:server