我在解析xml文件时,某个节点下面有多个孩子节点,我想删除掉其中几个节点,为什么总是不起效果呢?
代码如下:
public static void update(Object obj, String operFlag, String elID) {
try {
fis = new FileInputStream(StaticParam.pdmFilePath.replaceAll("%20"," "));
SAXBuilder sb = new SAXBuilder();
Document doc = sb.build(fis);
Element root = doc.getRootElement();
List list = root.getChildren();
for (int i = 0; i < list.size(); i++) {
Element voElement = (Element) list.get(i);
String qualifiedName = voElement.getQualifiedName();
System.out.println("qualifiedName:" + qualifiedName);
if("ObjectID".equals(qualifiedName)||"Name".equals(qualifiedName)||"Code".equals(qualifiedName)||"CreationDate".equals(qualifiedName)||"Creator".equals(qualifiedName)||"ModificationDate".equals(qualifiedName)||"Modifier".equals(qualifiedName)||"Comment".equals(qualifiedName)){
list.remove(voElement);
// voElement.getParent().removeContent(voElement);//tempEl删除它的孩子节点;
}
Format format = Format.getPrettyFormat();
format.setIndent("  ");
format.setEncoding("utf-8");
XMLOutputter outp = new XMLOutputter(format);
fo = new FileOutputStream(StaticParam.pdmFilePath);
outp.output(doc, fo);
// formatxml(doc,StaticParam.pdmFilePath); }
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (fo != null)
fo.close();
if (fis != null)
fis.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}

根节点下有很多孩子节点,我就是想把根节点下面孩子节点为ObjectID、Name、Code等孩子节点删除掉。但是每次只能删除掉4个孩子节点,难道Jdom不能删除超过4个的孩子节点吗,还是我上面的写法有问题呢?请高手参与!谢谢!

解决方案 »

  1.   

    难道Jdom不能删除超过4个的孩子节点吗不是这个问题问题是得到节点的名字应该是element.getName()你那里那么多判断。。节点名都符合才会删除的。。
      

  2.   

    我知道了,谢谢大家。原因是:
     for (int i = 0; i < list.size(); i++) {
                    Element voElement = (Element) list.get(i);
                    String qualifiedName = voElement.getQualifiedName();
                    System.out.println("qualifiedName:" + qualifiedName);
                    if("ObjectID".equals(qualifiedName)||"Name".equals(qualifiedName)||"Code".equals(qualifiedName)||"CreationDate".equals(qualifiedName)||"Creator".equals(qualifiedName)||"ModificationDate".equals(qualifiedName)||"Modifier".equals(qualifiedName)||"Comment".equals(qualifiedName)){
                        list.remove(voElement);
                        // voElement.getParent().removeContent(voElement);//tempEl删除它的孩子节点;
                    }这儿的list,在删除元素的时候,是从头开始删除的,list的大小也发生变化,这样删除不合适。