Java XML删除元素(如果年龄>;30
大家好:)我对Java和XML有问题 我有一个XML文件,其中有一些不同年龄的足球运动员,我只想删除年龄超过30岁的球员 这是我的Java源代码: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
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文件吗?