如何从 XML 中提取数据
how to Extracting data from XML
我正在从 xml 输出中提取数据。
我写了下面的代码。我只需要从下面 xml 中提取部门编号。
在 运行 上,以下代码获得空输出。
有人可以告诉我如何从 xml 中提取部门编号以及为什么输出为 null 吗?
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)
}
看来提供的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
我正在从 xml 输出中提取数据。 我写了下面的代码。我只需要从下面 xml 中提取部门编号。 在 运行 上,以下代码获得空输出。 有人可以告诉我如何从 xml 中提取部门编号以及为什么输出为 null 吗?
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)
}
看来提供的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