java如何读取xml
读取XML的常用方法
在Java中读取XML文件有多种方式,以下是几种常见的方法:
DOM解析
DOM(Document Object Model)将整个XML文档加载到内存中,形成树状结构,适合对XML进行频繁的读写操作。
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse(new File("file.xml"));
NodeList nodeList = document.getElementsByTagName("tagName");
for (int i = 0; i < nodeList.getLength(); i++) {
Node node = nodeList.item(i);
System.out.println(node.getTextContent());
}
SAX解析
SAX(Simple API for XML)是基于事件驱动的解析方式,适合处理大型XML文件,内存占用较小。
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser saxParser = factory.newSAXParser();
DefaultHandler handler = new DefaultHandler() {
public void startElement(String uri, String localName, String qName, Attributes attributes) {
System.out.println("Start Element: " + qName);
}
};
saxParser.parse("file.xml", handler);
StAX解析
StAX(Streaming API for XML)结合了DOM和SAX的优点,提供了基于指针的API,可以向前移动读取XML。
XMLInputFactory factory = XMLInputFactory.newInstance();
XMLEventReader eventReader = factory.createXMLEventReader(new FileInputStream("file.xml"));
while (eventReader.hasNext()) {
XMLEvent event = eventReader.nextEvent();
if (event.isStartElement()) {
StartElement startElement = event.asStartElement();
System.out.println("Start Element: " + startElement.getName());
}
}
JDOM解析
JDOM是专为Java设计的XML解析库,提供了更简洁的API。
SAXBuilder builder = new SAXBuilder();
Document document = builder.build(new File("file.xml"));
Element rootNode = document.getRootElement();
List<Element> list = rootNode.getChildren("tagName");
for (Element element : list) {
System.out.println(element.getText());
}
DOM4J解析
DOM4J是另一个流行的Java XML解析库,性能优异且易于使用。

SAXReader reader = new SAXReader();
Document document = reader.read(new File("file.xml"));
Element root = document.getRootElement();
Iterator<Element> it = root.elementIterator("tagName");
while (it.hasNext()) {
Element element = it.next();
System.out.println(element.getText());
}
选择建议
- 需要频繁读写XML或文档较小时,推荐使用DOM、JDOM或DOM4J。
- 处理大型XML文件时,SAX或StAX更为适合,内存占用更少。
- 需要更简洁的API时,JDOM和DOM4J是不错的选择。
每种方法各有优劣,根据具体需求选择最合适的解析方式。






