In this exmaple, we will parse a div element with multiple span child
elements:
example-4.xml |
repository |
view raw
| <?xml version="1.0" encoding="UTF-8"?>
<div>
<span>SpanText1</span>
<span>SpanText2</span>
<span>SpanText3</span>
</div>
|
To parse multiple span child elements, the struct field in div struct of
previous example :
becomes:
SpanList []span `xml:"span"`
The type span
becomes []span
, and `xml:"span` is added to
indicate the tag name of child elements.
Run code on Go Playground
parse-4.go |
repository |
view raw
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 | package main
import (
"io/ioutil"
"encoding/xml"
"fmt"
)
type div struct {
XMLName xml.Name `xml:"div"`
SpanList []span `xml:"span"`
}
type span struct {
// XMLName xml.Name `xml:"span"`
Text string `xml:",chardata"`
}
func main() {
d := div{}
xmlContent, _ := ioutil.ReadFile("example-4.xml")
err := xml.Unmarshal(xmlContent, &d)
if err != nil { panic(err) }
fmt.Println(d)
// uncomment XMLName struct field in span struct
// the output of fmt.Println(d) will be:
// {{ div} [{{ span} SpanText1} {{ span} SpanText2} {{ span} SpanText3}]}
}
|
The output result:
{{ div} [{SpanText1} {SpanText2} {SpanText3}]}
Note
If you uncomment the following line:
// XMLName xml.Name `xml:"span"`
The output will be:
{{ div} [{{ span} SpanText1} {{ span} SpanText2} {{ span} SpanText3}]}
Tested on: Ubuntu Linux 14.10, Go 1.4.
[Golang] XML Parsing Example series: