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 でこれら 2 つの型セットを使用するにはどうすればよいですか? ありがとう。