Java Dom4j:节点实现不兼容

Java Dom4j:节点实现不兼容,java,xml,dom4j,incompatibility,Java,Xml,Dom4j,Incompatibility,Dom4j显然是一个很棒的项目,自2005年以来就没有人接触过它,但它仍然被广泛使用 但是,节点实现的不兼容性给我带来了一些问题。org.dom4j、org.w3c.dom和其他名称之间存在名称冲突,例如org.dom4j.Node和org.w3c.dom.Node 例如,我有一些内容,想从到提取任何内容,并摆脱。所以我试过了 if( itemElm.getFirstChild().getNodeType() == Node.ELEMENT_NODE ){ NodeLis

Dom4j显然是一个很棒的项目,自2005年以来就没有人接触过它,但它仍然被广泛使用

但是,节点实现的不兼容性给我带来了一些问题。
org.dom4j
org.w3c.dom
和其他名称之间存在名称冲突,例如
org.dom4j.Node
org.w3c.dom.Node

例如,我有
  • 一些内容
  • ,想从
  • 提取任何内容,并摆脱
    。所以我试过了

        if( itemElm.getFirstChild().getNodeType() == Node.ELEMENT_NODE ){
            NodeList nodes = itemElm.getFirstChild().getChildNodes();
            //itemElm.removeChild( itemElm.getFirstChild() ); // No effect on error
            for( int i = 0; i < nodes.getLength(); i++ ) {
                itemElm.appendChild( nodes.item(i) );
            }
        }/**/
    
    itemElm.add( DOMNodeHelper.asDOMNode( itemElm, nodes.item(i) ));
    
    所以我试过了

        if( itemElm.getFirstChild().getNodeType() == Node.ELEMENT_NODE ){
            NodeList nodes = itemElm.getFirstChild().getChildNodes();
            //itemElm.removeChild( itemElm.getFirstChild() ); // No effect on error
            for( int i = 0; i < nodes.getLength(); i++ ) {
                itemElm.appendChild( nodes.item(i) );
            }
        }/**/
    
    itemElm.add( DOMNodeHelper.asDOMNode( itemElm, nodes.item(i) ));
    
    不一样。所以我试着:

    DOMNodeHelper.appendChild( itemElm, nodes.item(i) ); // TODO: Could improve Dom4j.
    
    因为它是appendChild(org.dom4j.Node,org.w3c.dom.Node)
    。但是没有相同的结果

    我应该如何解决这个问题?我应该如何在Dom4j中使用这两种类型集?谢谢


    上下文:

    如果要使用DOM api,绝对没有理由使用DOM4J;使用最新的Xerce或JRE提供的Xerce


    可能有理由使用另一个API,例如DOM4J,但是只应使用“本机”API。我不相信DOM4J中的DOM适配层可以完成任何严肃的工作;正如您所说,自2005年以来就没有人接触过它。

    这就是问题所在-我使用本机api,但它在某个地方泄漏了W3C DOM类型,而在其他地方需要Dom4j类型。没有明显的选择。你说的“泄露W3CDOM类型”是什么意思?如果您不使用
    org.dom4j.dom
    包中的任何内容,您将永远不会看到任何W3C dom类型。我明白了,可能是我的应用程序的代码泄漏了这些类型:)我会检查一下。它为什么会有这样的impl绑定?在slf4j风格中,它是否试图像几个DOM API的门面一样工作?DOM4J接近于非常好,但它自身的便利性不足;做同一件事的方法太多了;而创始人,实施者,显然在完成90%时失去了注意力。没关系,但是如果你在边缘使用了任何东西,你就只能靠自己了。