无法在 Go 中正确 unmarshal/marshal 动态 XML 结构
Unable to correctly unmarshal/marshal dynamic XML structs in Go
我 xsd 描述了一个 XML 模式,我正在尝试在 go 结构中编写这个 xsd 的表示,所以我能够 marshal/unmarshal XML 基于此架构。
这是我为重现我遇到的问题而编写的一些 go playground 代码。
https://play.golang.org/p/ktJOsCDyLW
在架构中,标签 video
和 web
是动态的(因为它们都可以在 media
下出现不止一次,并且内部内容不同)。
我尝试编写动态结构以及 Unmarshaller/Marshaller 接口,如示例所示,我似乎能够执行解析,但 unmarshals/marshals 内部内容不正确,忽略了名称和 URL 列表,每个列表只取一个元素。
我不确定这是什么问题。
如有任何帮助,我们将不胜感激
我已经在此处修改了您的示例 https://play.golang.org/p/rbcoL0ayeb。将您的定义更改为以下内容:
系列:
type Series struct {
Name []Name `xml:"name"`
}
网站:
type Website struct {
Url []Url `xml:"url"`
}
我 xsd 描述了一个 XML 模式,我正在尝试在 go 结构中编写这个 xsd 的表示,所以我能够 marshal/unmarshal XML 基于此架构。
这是我为重现我遇到的问题而编写的一些 go playground 代码。
https://play.golang.org/p/ktJOsCDyLW
在架构中,标签 video
和 web
是动态的(因为它们都可以在 media
下出现不止一次,并且内部内容不同)。
我尝试编写动态结构以及 Unmarshaller/Marshaller 接口,如示例所示,我似乎能够执行解析,但 unmarshals/marshals 内部内容不正确,忽略了名称和 URL 列表,每个列表只取一个元素。
我不确定这是什么问题。
如有任何帮助,我们将不胜感激
我已经在此处修改了您的示例 https://play.golang.org/p/rbcoL0ayeb。将您的定义更改为以下内容:
系列:
type Series struct {
Name []Name `xml:"name"`
}
网站:
type Website struct {
Url []Url `xml:"url"`
}