Dom4j 显然是一个很棒的项目,它自 2005 年以来就没有被触及,但它仍然被广泛使用。
但是,Node 实现的不兼容给我带来了一些问题。org.dom4j
、和其他之间存在名称冲突org.w3c.dom
,例如org.dom4j.Node
和org.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 中使用这两个类型集?谢谢。