Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java XML删除元素(如果年龄>;30_Java_Xml - Fatal编程技术网

Java XML删除元素(如果年龄>;30

Java XML删除元素(如果年龄>;30,java,xml,Java,Xml,大家好:)我对Java和XML有问题 我有一个XML文件,其中有一些不同年龄的足球运动员,我只想删除年龄超过30岁的球员 这是我的Java源代码: try { File inputFile = new File("src/players.xml"); DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder dBuil

大家好:)我对Java和XML有问题

我有一个XML文件,其中有一些不同年龄的足球运动员,我只想删除年龄超过30岁的球员

这是我的Java源代码:

try {   
         File inputFile = new File("src/players.xml");
         DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
         DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
         Document doc = dBuilder.parse(inputFile);


         System.out.println("Root element :" + doc.getDocumentElement().getNodeName());
         NodeList nList = doc.getElementsByTagName("player");
         System.out.println("----------------------------");


         for (int temp = 0; temp < nList.getLength(); temp++) {
            Node nNode = nList.item(temp);
            System.out.println("\nCurrent Element :" + nNode.getNodeName());

            if (nNode.getNodeType() == Node.ELEMENT_NODE) {     

               Element eElement = (Element) nNode;


               int ageNumber = Integer.parseInt(eElement.getElementsByTagName("age").item(0).getTextContent());

               if(ageNumber > 30) {
                   temp--;
                   eElement.getParentNode().removeChild(eElement);  
                   doc.normalize();
                   }

               System.out.println("ID : " + eElement
                  .getElementsByTagName("id")
                  .item(0)
                  .getTextContent());

               System.out.println("First Name : " 
                      + eElement
                      .getElementsByTagName("firstName")
                      .item(0)
                      .getTextContent());

               System.out.println("Last Name : " 
               + eElement
                  .getElementsByTagName("lastName")
                  .item(0)
                  .getTextContent());

               System.out.println("Age : " 
               + eElement
                  .getElementsByTagName("age")
                  .item(0)
                  .getTextContent());

            }
         }
      } catch (Exception e) {
         e.printStackTrace();
      }
}
试试{
File inputFile=新文件(“src/players.xml”);
DocumentBuilderFactory dbFactory=DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder=dbFactory.newDocumentBuilder();
Document doc=dBuilder.parse(inputFile);
System.out.println(“根元素:+doc.getDocumentElement().getNodeName());
NodeList nList=doc.getElementsByTagName(“播放器”);
System.out.println(“-------------------------------”;
对于(int-temp=0;temp30){
温度--;
eElement.getParentNode().removeChild(eElement);
doc.normalize();
}
System.out.println(“ID:+EEElement
.getElementsByTagName(“id”)
.项目(0)
.getTextContent());
System.out.println(“名字:
+伊莱恩
.getElementsByTagName(“名字”)
.项目(0)
.getTextContent());
System.out.println(“姓氏:
+伊莱恩
.getElementsByTagName(“姓氏”)
.项目(0)
.getTextContent());
System.out.println(“年龄:
+伊莱恩
.getElementsByTagName(“年龄”)
.项目(0)
.getTextContent());
}
}
}捕获(例外e){
e、 printStackTrace();
}
}
但是程序不会删除年龄大于30岁的元素


有人能帮我吗?提前感谢

DOM集合是活动的,因此在集合上迭代时尝试删除元素可以从集合的末尾安全地完成。将(int-temp=0;temp更改为(int-temp=nList.getLength()-1;temp>=0;temp-->)的


当然,文档
doc
需要序列化回文件以保持更改,您可以使用默认的
Transformer
LSSerializer

什么是“不起作用”呢.有什么问题?运行时问题?编译问题?程序显示了播放器的列表,但没有删除30年以上的播放器。您能提供一个示例XML文件吗?