1 回答
TA贡献1851条经验 获得超4个赞
不幸的是,默认的 Go XML 编码器无法编码诸如
xmlns:foo="http://example.com/Foo-V1" foo:attr="bar"
如代码所示,它根据 URL 选择名称,您不能自己定义命名空间。Go 编码器发出这样的代码,AFAIK,基本上等同于上面的代码:
xmlns:Foo-V1="http://example.com/Foo-V1" Foo-V1:attr="bar"
这里唯一不同的是命名空间的前缀。
至于其他命名空间的前向声明,我建议只在需要它们的元素和属性上声明它们。即编码类似的东西
<foo xmlns:bar="http://example.com/Bar-V1">
<bar:elem>Hello world</bar:elem>
</foo>
使用这样的结构
type Foo struct {
XMLName xml.Name `xml:"foo"`
BarElem BarElem
}
type BarElem struct {
XMLName xml.Name `xml:"http://example.com/Bar-V1 elem"`
Data string `xml:",innerxml"`
}
序列化为
<foo>
<elem xmlns="http://example.com/Bar-V1">Hello world</elem>
</foo>
游乐场:http : //play.golang.org/p/79bhk70yFj。
- 1 回答
- 0 关注
- 144 浏览
添加回答
举报