java如何解析xml?写个示例
时间: 2023-07-17 11:04:30 浏览: 92
Java可以使用多种方式解析XML,其中常用的有DOM解析和SAX解析。
以下是使用DOM解析XML的示例代码:
```java
import javax.xml.parsers.*;
import org.w3c.dom.*;
public class XmlParser {
public static void main(String[] args) {
try {
// 1. 创建 DocumentBuilderFactory 对象
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
// 2. 创建 DocumentBuilder 对象
DocumentBuilder builder = factory.newDocumentBuilder();
// 3. 解析 XML 文件
Document document = builder.parse("example.xml");
// 4. 获取根节点
Element root = document.getDocumentElement();
// 5. 遍历子节点
NodeList nodeList = root.getChildNodes();
for (int i = 0; i < nodeList.getLength(); i++) {
Node node = nodeList.item(i);
if (node.getNodeType() == Node.ELEMENT_NODE) {
Element element = (Element) node;
System.out.println(element.getNodeName() + ": " + element.getTextContent());
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
以上代码解析了一个名为"example.xml"的XML文件,并输出了其子节点的名称和内容。
如果要使用SAX解析XML,可以使用Java提供的SAXParser类和DefaultHandler类,具体实现过程可以参考以下示例代码:
```java
import javax.xml.parsers.*;
import org.xml.sax.*;
import org.xml.sax.helpers.*;
public class XmlParser {
public static void main(String[] args) {
try {
// 1. 创建 SAXParserFactory 对象
SAXParserFactory factory = SAXParserFactory.newInstance();
// 2. 创建 SAXParser 对象
SAXParser parser = factory.newSAXParser();
// 3. 解析 XML 文件
parser.parse("example.xml", new MyHandler());
} catch (Exception e) {
e.printStackTrace();
}
}
}
class MyHandler extends DefaultHandler {
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
System.out.println(qName + ": " + attributes.getValue("id"));
}
public void characters(char[] ch, int start, int length) throws SAXException {
String value = new String(ch, start, length).trim();
if (!value.isEmpty()) {
System.out.println("Text: " + value);
}
}
}
```
以上代码同样解析了一个名为"example.xml"的XML文件,并输出了其元素节点的名称和属性值,以及文本节点的内容。
需要注意的是,以上示例代码都是基于本地文件的XML解析,如果需要解析远程XML文件,可以使用Java提供的URLConnection类或第三方库如Jsoup等实现。
阅读全文