我有一个XML文件,结构如下:
<contacts>
<contact id="0">
<firstname />
<lastname />
<address>
<street />
<city />
<state />
<zip />
<country />
</address>
<phone />
<email />
<continfo>
<byemail />
<byphone />
<bymail />
</continfo>
<comments />
<datecreated />
</contact>
</contacts>
使用JDOM,我想通过查找id属性来删除整个联系人元素及其所有子元素。但是我在解决这个方面遇到了一些麻烦。我尝试了以下内容:
Element pageRoot = pageXML.getRootElement();
List<Element> contacts = new ArrayList<Element>(pageRoot.getChildren() );
Element contact = null;
for( Element element : contacts ){
String att = element.getAttributeValue("id");
if( Integer.parseInt(att) == id){
contact = (Element) element.clone();
}
}
pageRoot.removeContent(contact);
然而,这种联系永远不会被删除。如果有人能指出我的方向,那将是伟大的。谢谢。
答案 0 :(得分:1)
为什么要克隆元素?
您可以直接将其删除:
if ( ... ){
elementToRemove = (Element) element;
}
...
pageRoot.removeContent (elementToRemove);
答案 1 :(得分:1)
建议(在我看来更容易)使用Iterator.remove()
删除元素。您可以在迭代子节点时执行此操作,以避免将元素存储到额外的局部变量。
List children = root.getChildren("foo");
Iterator itr = children.iterator();
while (itr.hasNext()) {
Element child = (Element) itr.next();
String att = child.getAttributeValue("id");
if( Integer.parseInt(att) == id){
itr.remove();
}
}
此示例改编自JDOM faq