I am working on extracting data from a xml output. I have written the below code. I just need to extract dept number from the below xml. On running the below code getting a null output. Can someone let me how to extract the dept number from the xml and why I am getting null as output?
package main
import (
"encoding/xml"
"fmt"
)
type Users struct {
XMLName xml.Name `xml:"users"`
User User `xml:"user"`
}
type User struct {
XMLName xml.Name `xml:"user"`
Type string `xml:"name"`
DD DD `xml:"dd"`
}
type DD struct {
XMLName xml.Name `xml:"dd"`
Number string `xml:"number"`
Description string `xml:"description"`
Type Type `xml:"type"`
Dept Dept `xml:"dept"`
}
type Type struct{
XMLName xml.Name `xml:"type"`
}
type Dept struct {
XMLName xml.Name `xml:"dept"`
Number string `xml:"number"`
Type Type `xml:"type"`
}
func main() {
var users Users
var byteValue = []byte(`<users>
<user>
<type>1</type>
<bu>
<number>123</number>
<id>100</id>
<type>
<code>123</code>
</type>
</bu>
<dd>
<number>1</number>
<description>abc</description>
<type>
<code>12345</code>
<id>qw123<id>
<type>
<dept>
<number>10</number> <<<<<<<
<type>qw12345</type>
</dept>
</dd>
<bd>
<code>34we5</code>
<id>qw123<id>
</bd>
<OD>
<code>9876</code>
<id>qwerty123<id>
</OD>
</user>
</users>`)
xml.Unmarshal(byteValue, &users)
fmt.Println("Dept Number: " + users.User.DD.Dept.Number)
}
Looks like the XML provided is wrong. Please do try using below XML
<users>
<user>
<type>1</type>
<bu>
<number>123</number>
<id>100</id>
<type>
<code>123</code>
</type>
</bu>
<dd>
<number>1</number>
<description>abc</description>
<type>
<code>12345</code>
<id>qw123</id>
</type>
<dept>
<number>10</number>
<type>qw12345</type>
</dept>
</dd>
<bd>
<code>34we5</code>
<id>qw123</id>
</bd>
<OD>
<code>9876</code>
<id>qwerty123</id>
</OD>
</user>
</users>
You can have a look at the working example with your provided example here on playground. https://play.golang.org/p/4zQsaz5Z_5P