Go-解组XML,属性问题

Go-解组XML,属性问题,go,xml-parsing,Go,Xml Parsing,也许有人能给我们一些启示。。。我似乎在使用encoding/XML库时遇到了麻烦 就我而言,我无法从复制有效的XML属性 基本上,我将从GPS文件中解组XML数据,然后将其编组回另一个文件。除了根XML的属性标记之外,其他一切都正常工作 我试过各种各样的方法 func (c *gpx) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {} 类型方法无效 基本上,我只希望根标记正确分配所有属性。我无法理解为什么不能执行Att

也许有人能给我们一些启示。。。我似乎在使用encoding/XML库时遇到了麻烦

就我而言,我无法从复制有效的XML属性 基本上,我将从GPS文件中解组XML数据,然后将其编组回另一个文件。除了根XML的属性标记之外,其他一切都正常工作

我试过各种各样的方法

func (c *gpx) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {} 
类型方法无效

基本上,我只希望根标记正确分配所有属性。我无法理解为什么不能执行Attributes[]xml.Attr xml:,Attr“或类似操作

好的XML头->

我无法链接错误的XML头,因为我是新成员。。但是XML解组/封送处理会将uu添加到名称空间中,这会导致一些问题

前往游乐场连结:

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

不幸的是,默认的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>
它序列化为

<foo>
  <elem xmlns="http://example.com/Bar-V1">Hello world</elem>
</foo>

你好,世界

操场:。

欢迎来到SO。作为提示,添加一个带有“帮助他人”的链接可以帮助您。感谢您的回复。我在围棋场上放了一些密码。我相信这也复制了我的问题。您的问题是那些应该是
xmlns:foo
\u xmlns:foo
?名称空间是问题之一,但输出XML属性与传入属性有很大不同。例如,如果我在一个巨大的GPS文件上运行我的程序,它将不会导入Garmin Basecamp,直到我替换标题。接受答案。没错,这是Go的XML编码器的一个限制。不幸的是,Garmin Basecamp对XML属性的表示方式非常挑剔。因此,我执行了一些基本的字符串操作以获得所需的结果。不幸的是,其他语言(不提及任何名称)很容易给出所需的结果。
<foo>
  <elem xmlns="http://example.com/Bar-V1">Hello world</elem>
</foo>