在 Go 的 XML 反序列化文档 中,有一个示例可以反序列化此 XML。
使用这些结构体
请注意,
当我尝试对这个XML进行取消编组时
使用这些结构体
我得到了空的结果
<Person>
<FullName>Grace R. Emlin</FullName>
<Company>Example Inc.</Company>
<Email where="home">
<Addr>gre@example.com</Addr>
</Email>
<Email where='work'>
<Addr>gre@work.com</Addr>
</Email>
<Group>
<Value>Friends</Value>
<Value>Squash</Value>
</Group>
<City>Hanga Roa</City>
<State>Easter Island</State>
</Person>
使用这些结构体
type Address struct {
City, State string
}
type Result struct {
XMLName xml.Name `xml:"Person"`
Name string `xml:"FullName"`
Phone string
Email []Email
Groups []string `xml:"Group>Value"`
Address
}
请注意,
Result
包含对单独定义的 Address
的引用。显然,这段代码运行正常。
当我尝试对这个XML进行取消编组时
<C>
<D>
<E>Fred</E>
<F>42</F>
</D>
</C>
使用这些结构体
type D struct {
E string
F int
}
type C struct { // Compiles OK but result empty.
D
}
我得到了空的结果
{{ 0 }}
。然而下面的结构正常工作,产生{{ Fred 42 }}
。type C struct { // This works.
D struct {
E string
F int
}
}
请查看游乐场示例。
我是否忽略了关于结构体的一些微妙之处?