用java写一个查找xml文件中id重复的代码
时间: 2024-05-09 09:21:03 浏览: 153
以下是用Java语言实现查找XML文件中ID重复的代码:
```java
import java.io.File;
import java.util.HashMap;
import java.util.Map;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
public class FindDuplicateIdInXml {
public static void main(String[] args) {
String filePath = "example.xml"; // XML文件路径
Map<String, Integer> idCountMap = new HashMap<String, Integer>(); // 存储ID计数的Map
try {
File xmlFile = new File(filePath);
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(xmlFile);
doc.getDocumentElement().normalize();
// 获取所有包含ID属性的节点
NodeList nodeList = doc.getElementsByTagName("*");
for (int i = 0; i < nodeList.getLength(); i++) {
Element element = (Element) nodeList.item(i);
String id = element.getAttribute("id");
if (!id.isEmpty()) {
// 如果已有该ID,则计数加1;否则将该ID添加到Map中
if (idCountMap.containsKey(id)) {
idCountMap.put(id, idCountMap.get(id) + 1);
} else {
idCountMap.put(id, 1);
}
}
}
// 输出重复的ID
for (String id : idCountMap.keySet()) {
if (idCountMap.get(id) > 1) {
System.out.println("ID " + id + " is duplicated.");
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
该代码使用了DOM解析XML文件,并使用HashMap存储ID计数。遍历XML文件中所有包含ID属性的节点,并判断是否已存在该ID,如果存在则计数加1,否则将该ID添加到HashMap中。最后,遍历HashMap,输出重复的ID即可。
需要注意的是,该代码假定每个包含ID属性的节点的ID唯一,如果XML文件中存在相同的ID但它们位于不同的节点,该代码将不会检测到。如果需要检测XML文件中所有ID的唯一性,可以将HashMap改为HashSet,并在添加ID时判断是否已存在。
阅读全文