[英]How to delete nodes from a xml document (Dom4J)
Here is my code 这是我的代码
public Document getNewFeedDocument(Document doc) {
Element root = doc.getRootElement();
List<Node> nodes = doc.selectNodes("Message");
for(int i=0; i<nodes.size(); i++) {
String message_ID = ((Element)nodes.get(i)).selectSingleNode("MessageID").getText();
if(Integer.parseInt(message_ID)%2==0) {
nodes.get(i).detach();
}
}
try {
SAXReader reader = new SAXReader();
return reader.read(new StringReader(root.asXML()));
} catch(Exception e) {
return null;
}
}
But this returns the same document, How can I get modified document. 但这会返回相同的文档,我该如何获取修改后的文档。
I think that the selectNodes creates a temporary document. 我认为selectNodes创建一个临时文档。 Iterate over the original doc: 遍历原始文档:
private boolean toRemove( Node node ){
if( ! "Message".equals( node.getName() ) return;
String message_ID =
((Element)nodes.get(i)).selectSingleNode("MessageID").getText();
return Integer.parseInt(message_ID)%2 == 0;
}
public void treeWalk(Element element) {
for ( int i = 0, size = element.nodeCount(); i < size; i++ ) {
Node node = element.node(i);
if ( node instanceof Element ) {
if( toRemove( node ) ){
node.detach();
i--;
} else {
treeWalk( (Element) node );
}
}
}
}
treeWalk( doc.getRootElement() );
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.