gpt4 book ai didi

Go - 解码 XML,属性问题

转载 作者:IT王子 更新时间:2023-10-29 01:47:58 24 4
gpt4 key购买 nike

也许有人可以在这里提供一些见解......我似乎在编码/XML 库方面遇到了困难。

我这辈子都无法从 复制有效的 XML 属性基本上我从 GPS 文件中解码 XML 数据,然后将其编码回另一个文件。一切正常,除了根 XML

的属性标签

我试过很多

func (c *gpx) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {} 

类型方法无济于事。

基本上我只希望根标签 < GPX > 正确分配所有属性。为什么你不能做 Attributes []xml.Attr xml:",attr"或类似的东西超出了我的范围。

良好的 XML header -> http://pastebin.com/XjEZuBa1

我无法链接错误的 XML header ,因为我是新成员。但是 XML 解码/编码过程将 _ 添加到 namespace ,这会导致问题等。

GO Playground 链接:http://play.golang.org/p/J7wy6306Cj

任何帮助将不胜感激,谢谢。

最佳答案

不幸的是,默认的 Go XML 编码器不能编码这样的东西

xmlns:foo="http://example.com/Foo-V1" foo:attr="bar"

作为the code shows ,它根据 URL 选择名称,您不能自己定义 namespace 。 Go 编码器发出这样的代码,AFAIK,基本上等同于上面的代码:

xmlns:Foo-V1="http://example.com/Foo-V1" Foo-V1:attr="bar"

这里唯一不同的是命名空间的前缀。

至于其他命名空间的前向声明,我建议只在需要它们的元素和属性上声明它们。 IE。编码类似

<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>

Playground :http://play.golang.org/p/79bhk70yFj .

关于Go - 解码 XML,属性问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35874580/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com