Normally in PHP, I would just parse the old document and write to the new document while ignoring the unwanted elements.
问问题
1882 次
2 回答
1
这是我想出的第一个解决方案:
DocumentBuilder builder = DocumentBuilderFactory
.newInstance()
.newDocumentBuilder();
StringReader reader = new StringReader( xml );
Document document = builder.parse( new InputSource(reader) );
XPathExpression expr = XPathFactory
.newInstance()
.newXPath()
.compile( ... );
Object result = expr.evaluate(document, XPathConstants.NODESET);
Element el = document.getDocumentElement();
NodeList nodes = (NodeList) result;
for (int i = 0; i < nodes.getLength(); i++) {
el.removeChild( nodes.item(i) );
}
如您所见,它有点长。作为一个追求简单的程序员,我决定采纳 Ahmed 的建议,希望我能找到更好的解决方案,我想出了这个:
List<?> elements = page.getByXPath( ... );
DomNode node = null;
for( Object o : elements ) {
node = (DomNode)o;
node.getParentNode().removeChild( node );
}
请注意,这些只是片段,我省略了导入和 XPath 表达式,但您明白了。
于 2010-09-26T14:55:44.753 回答
0
看看 DOM 方法,你可以删除节点。
http://htmlunit.sourceforge.net/apidocs/com/gargoylesoftware/htmlunit/html/DomNode.html
于 2010-09-25T07:49:56.213 回答