Java dom4j确定xml名称空间的作用域,而不是使其保持全局

Java dom4j确定xml名称空间的作用域,而不是使其保持全局,java,xml,merge,dom4j,xbrl,Java,Xml,Merge,Dom4j,Xbrl,使用从internet复制的以下代码(由以前的开发人员-不是我) import java.util.ListIterator; 导入org.dom4j.Element; 导入org.dom4j.Namespace; 导入org.dom4j.QName; 导入org.dom4j.VisitorSupport; 类DoNamespaceChange扩展了VisitorSupport { 来自的私有名称空间; 私有名称空间; 公共DoNamespaceChange(命名空间从,命名空间到) { th

使用从internet复制的以下代码(由以前的开发人员-不是我)

import java.util.ListIterator;
导入org.dom4j.Element;
导入org.dom4j.Namespace;
导入org.dom4j.QName;
导入org.dom4j.VisitorSupport;
类DoNamespaceChange扩展了VisitorSupport
{
来自的私有名称空间;
私有名称空间;
公共DoNamespaceChange(命名空间从,命名空间到)
{ 
this.from=from;this.to=to;
}
公共无效访问(元素节点)
{ 
命名空间ns=node.getNamespace();
如果(ns.getURI().equals(from.getURI()))
{    
QName newQName=新QName(node.getName(),to);
node.setQName(newQName);
}    
ListIterator命名空间=node.additionalNamespaces().ListIterator();
while(namespaces.hasNext())
{    
名称空间additionalNamespace=(名称空间)名称空间;
if(additionalNamespace.getURI().equals(from.getURI()))
{      
namespace.remove();
}  
}  
}
}
我试图在合并过程中重命名XML标记(实际上是XBRL)属性。合并过程接收2个XBRL文档并将它们合并到单个文档中

每个预合并文档的顶部都有xmlns标记,这些标记给出了声明的全局范围

每个文档的顶部都有此标题栏(或类似标题栏)


然后,相关章节将以一种易于阅读的格式列在下面

我们的合并代码目前不使用上面的Java代码来编辑名称空间,但它将使用它来修复两个具有相同xmlns:url标记和不同url的文档之间的名称空间冲突问题

在当前世界中,合并文档的标题确实位于顶部,如上所示

但是,

当我通过顶部显示的代码运行文档时,为了进行重命名,它会将xmlns标记移动到相关部分本身(范围),我认为这很好,但我想知道是否有一种快速简单的方法来重命名标记,以便将其合并到新文档中。合并文档的示例如下所示

<c_xbrli:xbrl
        xmlns:c_xbrli="http://www.url.com"
        xmlns:a_xbrli="http://www.url.com">
    <c_link:schemaRef
            xmlns:c_link="http://www.url.com"
            xmlns:xlink="http://www.url.com"
            xlink:href="http://www.url.com"
            xlink:type="simple"></c_link:schemaRef>
    <a_link:schemaRef
            xmlns:a_link="http://www.url.com"
            xmlns:xlink="http://www.url.com"
            xlink:href="http://www.url.com"
            xlink:type="simple"></a_link:schemaRef>

请注意:这是一个工作问题,因此必须使数据匿名,因此请忽略URL:)

还请注意:重命名的标记前缀为a_u和c_u-这是重命名代码的设计目的,因此这里没有问题。只需将标签放置在文档中即可

很抱歉这么冗长,但简而言之,我想知道的是,在通过dom4j重命名到新文档时,是否可以保留原始XML文档中的任何格式

为什么要对我们合并的文档执行此操作


感谢您的帮助

您是否尝试将名称空间添加到文档的根目录中?我不知道dom4j,但在其他DOM中,有一种类似于整个文档的名称空间管理器的东西,您应该在其中添加正确的名称空间。谢谢Bill,我把术语弄错了。将xmlns标记添加到根元素正是我试图询问的方法:)我只是通过阅读和复习XML术语才发现了这一点。我现在一定会看看这个,看看能找到什么。
<xbrli:xbrl
  xmlns:xbrli="http://www.url.com/" 
  xmlns:ab-CD="http://www.url.co.uk/" 
  xmlns:ef-GH="http://www.url.com/" 
  xmlns:ab-XYZ="http://www.url.com/" 
  xmlns:ur-ACE="http://www.url.co.uk/">
<c_xbrli:xbrl
        xmlns:c_xbrli="http://www.url.com"
        xmlns:a_xbrli="http://www.url.com">
    <c_link:schemaRef
            xmlns:c_link="http://www.url.com"
            xmlns:xlink="http://www.url.com"
            xlink:href="http://www.url.com"
            xlink:type="simple"></c_link:schemaRef>
    <a_link:schemaRef
            xmlns:a_link="http://www.url.com"
            xmlns:xlink="http://www.url.com"
            xlink:href="http://www.url.com"
            xlink:type="simple"></a_link:schemaRef>