如同 json 包一样,也有 Marshal() 和 UnMarshal() 从 XML 中编码和解码数据;但这个更通用,可以从文件中读取和写入(或者任何实现了 io.Reader 和 io.Writer 接口的类型)
//需要时再来了解package mainimport ("encoding/xml""fmt""strings")var t, token xml.Tokenvar err errorfunc main() {input := "<Person><FirstName>Laura</FirstName><LastName>Lynn</LastName></Person>"inputReader := strings.NewReader(input)p := xml.NewDecoder(inputReader)for t, err = p.Token(); err == nil; t, err = p.Token() {switch token := t.(type) {case xml.StartElement:name := token.Name.Localfmt.Printf("Token name: %s\n", name)for _, attr := range token.Attr {attrName := attr.Name.LocalattrValue := attr.Valuefmt.Printf("An attribute is: %s %s\n", attrName, attrValue)// ...}case xml.EndElement:fmt.Println("End of token")case xml.CharData:content := string([]byte(token))fmt.Printf("This is the content: %v\n", content)// ...default:// ...}}}
