如同 json 包一样,也有 Marshal() 和 UnMarshal() 从 XML 中编码和解码数据;但这个更通用,可以从文件中读取和写入(或者任何实现了 io.Reader 和 io.Writer 接口的类型)

    1. //需要时再来了解
    2. package main
    3. import (
    4. "encoding/xml"
    5. "fmt"
    6. "strings"
    7. )
    8. var t, token xml.Token
    9. var err error
    10. func main() {
    11. input := "<Person><FirstName>Laura</FirstName><LastName>Lynn</LastName></Person>"
    12. inputReader := strings.NewReader(input)
    13. p := xml.NewDecoder(inputReader)
    14. for t, err = p.Token(); err == nil; t, err = p.Token() {
    15. switch token := t.(type) {
    16. case xml.StartElement:
    17. name := token.Name.Local
    18. fmt.Printf("Token name: %s\n", name)
    19. for _, attr := range token.Attr {
    20. attrName := attr.Name.Local
    21. attrValue := attr.Value
    22. fmt.Printf("An attribute is: %s %s\n", attrName, attrValue)
    23. // ...
    24. }
    25. case xml.EndElement:
    26. fmt.Println("End of token")
    27. case xml.CharData:
    28. content := string([]byte(token))
    29. fmt.Printf("This is the content: %v\n", content)
    30. // ...
    31. default:
    32. // ...
    33. }
    34. }
    35. }