0

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

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

例如,我有<li><p>Some content</p></li>并且想要从<p>to中提取任何东西<li>并摆脱<p>. 所以我尝试了

    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) );
        }
    }/**/

这适用于我从 C++、.Net 甚至 Java 知道的其他实现。但不适用于 Dom4j:

// Cannot convert: org.dom4j.tree.DefaultText@275d595c [Text: "Some content."] into a W3C DOM Node

所以我尝试了

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 中使用这两个类型集?谢谢。

上下文:http ://code.google.com/p/jtexy/source/browse/trunk/core/src/main/java/cz/dynawest/jtexy/modules/ListModule.java#380

4

1 回答 1

0

如果你打算使用 DOM api,那么绝对没有理由使用 DOM4J;使用最新的 xerces 或 JRE 提供的 xerces。

可能有理由使用其他 API,例如 DOM4J,但只能使用“本机”API。对于任何严肃的工作,我都不相信 DOM4J 中的 DOM 适配层;正如你所说,它自 2005 年以来就没有被触及过。

于 2012-12-16T22:17:58.467 回答