Go XML解组不遵守根元素命名空间前缀定义

Go XML解组不遵守根元素命名空间前缀定义,go,xml-parsing,Go,Xml Parsing,以下是XML结构: <root xmlns:test="http://test.com/testns"> <test:sub> <title>this is title</title> </test:sub> </root> 这就是被封送回来的内容: <root> <sub xmlns="http://test.com

以下是XML结构:

<root xmlns:test="http://test.com/testns">
            <test:sub>
                <title>this is title</title>
            </test:sub>
</root>
这就是被封送回来的内容:

<root>
    <sub xmlns="http://test.com/testns">
        <title>this is title</title>
    </sub>
</root>

这是标题
在封送处理和子元素使用url命名空间而不是前缀之后,将删除根命名空间前缀定义。这是你的电话号码


是否有任何方法可以使封送/解编不会更改xml结构?谢谢

它看起来并没有改变逻辑结构。在原始输入中,
root
元素为名称空间
http://test.com/testns
但它实际上并没有声明自己在该名称空间中

下面是一个替代版本,它可以实现您想要的功能:


我将名称空间提升到
结构,并在输入中的
xml元素中添加了
测试:
前缀。

看起来xml名称空间目前无法正常工作,如果是这样,那么这是一个答案,可能最好将其制作成一个答案,以便可以接受。尽管我不确定它是否处理了问题
标题
元素是否正确。当名称空间是用
xmlns:test
声明的,并且
title
元素名没有前缀时,我认为它不应该在名称空间中。但是,在经过处理的版本中,使用原始
xmlns
声明,所有子项都自动位于名称空间中。。。正如@RoninDev所提到的,stdlib xml库对于名称空间不是很好。
<root>
    <sub xmlns="http://test.com/testns">
        <title>this is title</title>
    </sub>
</root>