当前位置:首页 > 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的步骤 Windows系统卸载方法 打开控制面板,选择“程序和功能”或“卸载程序”。在列表中找到Java相关条目(如“Java 8 Update 251”),右键选择卸载并跟随向导完成操…

如何编译java文件

如何编译java文件

安装JDK 确保系统已安装Java Development Kit(JDK)。可通过命令行输入 javac -version 和 java -version 验证。若未安装,需从Oracle或Open…

如何编译java

如何编译java

安装JDK 确保系统已安装Java Development Kit(JDK)。可通过命令行输入 javac -version 和 java -version 验证是否安装成功。若未安装,需从Oracl…

vue 实现文件目录

vue 实现文件目录

Vue 实现文件目录结构 Vue 项目通常采用模块化设计,合理的目录结构有助于代码维护和团队协作。以下是常见的 Vue 项目目录结构及说明: 基础目录结构(基于 Vue CLI 生成) proje…

如何学习java语言

如何学习java语言

学习Java语言的系统方法 理解基础概念 Java是一种面向对象的编程语言,掌握基础概念如变量、数据类型、运算符、控制流语句(if-else、循环)是第一步。熟悉类和对象的概念,理解封装、继承和多态三…

vue实现文件的下载

vue实现文件的下载

使用 window.open 方法 通过 window.open 直接打开文件链接触发下载,适用于简单的文件下载场景。 代码示例: window.open('文件URL', '_blank'); 使…