[Golang] XML Parsing Example (2)


following previous post [1], we add the attribute class="myClass" to the div element in our sample XML:

example-2.xml | repository | view raw
1
<?xml version="1.0" encoding="UTF-8"?><div class="myClass">Example</div>

It is easy to read the attribute. Just add the following struct field in the original struct:

Class string          `xml:"class,attr"`

"class,attr" means to read the attribute whose name is class.

Run code on Go Playground

parse-2.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
package main

import (
	"io/ioutil"
	"encoding/xml"
	"fmt"
)

type div struct {
	XMLName	xml.Name	`xml:"div"`
	Class	string		`xml:"class,attr"`
	Content	string		`xml:",chardata"`
}

func main() {
	d := div{}
	xmlContent, _ := ioutil.ReadFile("example-2.xml")
	err := xml.Unmarshal(xmlContent, &d)
	if err != nil { panic(err) }
	fmt.Println("XMLName:", d.XMLName)
	fmt.Println("Class:", d.Class)
	fmt.Println("Content:", d.Content)
}

The output result:

XMLName: { div}
Class: myClass
Content: Example

Tested on: Ubuntu Linux 14.10, Go 1.4.


[Golang] XML Parsing Example series:

[1][Golang] XML Parsing Example (1)
[2][Golang] XML Parsing Example (2)
[3][Golang] XML Parsing Example (3)
[4][Golang] XML Parsing Example (4)
[5][Golang] XML Parsing Example (5) - Parse OPML
[6][Golang] XML Parsing Example (6) - Parse OPML Concisely
[7][Golang] XML Parsing Example (7) - Parse RSS 2.0
[8][Golang] XML Parsing Example (8) - Parse Atom 1.0
[9][Golang] Convert Atom to RSS
[10][Golang] Parse Web Feed - RSS and Atom

[a]XML to Go struct : golang