Dom4j显然是一个很棒的项目,它自2005年以来就没有被触及过,但它仍然被广泛使用。
然而,Node实现的不兼容性给我带来了一些问题。org.dom4j、org.w3c.dom和其他名称之间存在冲突,例如org.dom4j.Node和org.w3c.dom.Node。
例如,我有<li><p>Some content</p></li>,想从<p>提取任何东西到<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
发布于 2012-12-16 22:17:58
如果您要使用DOM,绝对没有理由使用DOM4J;可以使用最新的xerces或JRE提供的xerces。
可能有理由使用另一个API,如DOM4J,但是应该只使用“本机”API。我不相信DOM4J中的DOM adaptaion层会做任何严肃的工作;正如您所说的,它自2005年以来就没有被触及过。
https://stackoverflow.com/questions/13898631
复制相似问题