英文:
how to Extracting data from XML
问题
我正在从一个 XML 输出中提取数据。我已经编写了下面的代码。我只需要从下面的 XML 中提取部门编号。运行下面的代码时得到一个空输出。有人可以告诉我如何从 XML 中提取部门编号以及为什么输出为空吗?
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)
}
英文:
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)
}
答案1
得分: 2
看起来提供的 XML 是错误的。请尝试使用以下 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>
您可以在 playground 上查看使用您提供的示例的工作示例。链接:https://play.golang.org/p/4zQsaz5Z_5P
英文:
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
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论