xml.go 1010 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. // xml.go
  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. }
  36. /* Output:
  37. Token name: Person
  38. Token name: FirstName
  39. This is the content: Laura
  40. End of token
  41. Token name: LastName
  42. This is the content: Lynn
  43. End of token
  44. End of token
  45. */