java怎么读取xml文件中的内容的
时间: 2023-05-26 18:06:44 浏览: 111
java_xml.rar_XML java_java xml_java 读取 本地文件
在Java中读取XML文件的常用方式是使用DOM(文档对象模型)或SAX(简单API for XML)解析器。
1. DOM解析器:
DOM解析器将文档加载到内存中,形成一个树形结构。每个节点都是一个Java对象,可以通过节点之间的关系来遍历整个文档。DOM解析器适用于对XML文档进行较复杂的操作和处理。
示例代码:
```java
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse(new File("example.xml"));
// 获取根节点
Element root = document.getDocumentElement();
// 获取节点内容
NodeList nodeList = root.getElementsByTagName("node");
for (int i = 0; i < nodeList.getLength(); i++) {
Element node = (Element) nodeList.item(i);
String content = node.getTextContent();
System.out.println(content);
}
```
2. SAX解析器:
SAX解析器是一种基于事件驱动的解析器,不将整个文档加载到内存中,而是边读边解析,遇到节点时触发事件。SAX解析器适用于对XML文档进行较简单的操作和处理。
示例代码:
```java
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser saxParser = factory.newSAXParser();
DefaultHandler handler = new DefaultHandler() {
boolean nodeFlag = false;
StringBuilder content = new StringBuilder();
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
if (qName.equalsIgnoreCase("node")) {
nodeFlag = true;
content.setLength(0);
}
}
public void characters(char[] ch, int start, int length) throws SAXException {
if (nodeFlag) {
content.append(new String(ch, start, length));
}
}
public void endElement(String uri, String localName, String qName) throws SAXException {
if (qName.equalsIgnoreCase("node")) {
nodeFlag = false;
System.out.println(content.toString());
}
}
};
saxParser.parse(new File("example.xml"), handler);
```
以上示例代码中的example.xml文件内容如下:
```xml
<?xml version="1.0" encoding="UTF-8"?>
<root>
<node>content1</node>
<node>content2</node>
<node>content3</node>
</root>
```
输出结果:
```
content1
content2
content3
```
阅读全文