java如何解析xml文件
使用DOM解析XML
DOM(Document Object Model)解析方式将整个XML文档加载到内存中,形成树状结构,适合处理较小的XML文件。
创建DocumentBuilderFactory和DocumentBuilder对象:
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
解析XML文件并获取根节点:
Document document = builder.parse(new File("example.xml"));
Element root = document.getDocumentElement();
遍历节点:
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;
String tagName = element.getTagName();
String textContent = element.getTextContent();
}
}
使用SAX解析XML
SAX(Simple API for XML)基于事件驱动,逐行读取XML文件,适合处理大文件,内存占用较小。
创建SAXParser对象:
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser saxParser = factory.newSAXParser();
定义自定义处理器继承DefaultHandler:
class MyHandler extends DefaultHandler {
@Override
public void startElement(String uri, String localName, String qName, Attributes attributes) {
// 处理元素开始标签
}
@Override
public void characters(char[] ch, int start, int length) {
// 处理元素内容
}
@Override
public void endElement(String uri, String localName, String qName) {
// 处理元素结束标签
}
}
解析XML文件:

saxParser.parse(new File("example.xml"), new MyHandler());
使用StAX解析XML
StAX(Streaming API for XML)提供基于指针的API,允许应用程序控制解析过程。
创建XMLInputFactory和XMLStreamReader对象:
XMLInputFactory factory = XMLInputFactory.newInstance();
XMLStreamReader reader = factory.createXMLStreamReader(new FileInputStream("example.xml"));
遍历XML事件:
while (reader.hasNext()) {
int event = reader.next();
if (event == XMLStreamConstants.START_ELEMENT) {
String elementName = reader.getLocalName();
} else if (event == XMLStreamConstants.CHARACTERS) {
String text = reader.getText();
}
}
使用JAXB解析XML
JAXB(Java Architecture for XML Binding)通过注解将Java对象与XML相互转换,适合面向对象的处理方式。

定义Java类并使用注解:
@XmlRootElement
class Person {
@XmlElement
private String name;
@XmlElement
private int age;
}
创建JAXBContext并解组XML:
JAXBContext context = JAXBContext.newInstance(Person.class);
Unmarshaller unmarshaller = context.createUnmarshaller();
Person person = (Person) unmarshaller.unmarshal(new File("example.xml"));
使用XPath查询XML
XPath提供在XML文档中查找信息的语言,可与DOM结合使用。
创建XPath对象:
XPathFactory xPathFactory = XPathFactory.newInstance();
XPath xpath = xPathFactory.newXPath();
执行XPath查询:
String expression = "/root/element";
NodeList nodes = (NodeList) xpath.evaluate(expression, document, XPathConstants.NODESET);






