当前位置:首页 > Java

java如何解析xml文件

2026-03-04 02:35:36Java

使用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查询:

java如何解析xml文件

String expression = "/root/element";
NodeList nodes = (NodeList) xpath.evaluate(expression, document, XPathConstants.NODESET);

标签: 文件java
分享给朋友:

相关文章

java如何创建线程

java如何创建线程

创建线程的方法 在Java中,创建线程主要有两种方式:继承Thread类和实现Runnable接口。以下是具体实现方法: 继承Thread类 通过继承Thread类并重写run()方法可以创建线程。…

如何用java

如何用java

用Java实现基础功能 Java是一种广泛使用的编程语言,适用于开发各种应用程序。以下是几个常见功能的实现方法。 打印"Hello, World!" public class HelloWorl…

java如何自学

java如何自学

确定学习目标和路径 自学Java需要明确目标,例如开发Web应用、Android应用或后端服务。根据目标选择学习重点,如Java基础、Spring框架或Android开发。制定阶段性计划,从基础语法到…

java如何删除文件

java如何删除文件

删除文件的基本方法 使用 java.io.File 类的 delete() 方法可以删除文件。如果文件存在且删除成功,返回 true;否则返回 false。 import java.io.Fil…

java版本如何查看

java版本如何查看

查看Java版本的命令行方法 在命令行或终端中运行以下命令可以查看当前安装的Java版本: java -version 输出示例: java version "1.8.0_301" Java(TM…

vue前端实现文件下载

vue前端实现文件下载

使用 window.open 直接下载 通过 window.open 直接打开文件链接触发下载,适用于简单的文件下载场景。 将文件 URL 作为参数传入,浏览器会自动处理下载行为: window.o…