当前位置:首页 > Java

java如何解析xml文件

2026-02-05 15:21:30Java

使用DOM解析XML

DOM(Document Object Model)解析方式将整个XML文件加载到内存中,形成树状结构,适合处理较小的XML文件。

创建DocumentBuilderFactory和DocumentBuilder对象:

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();

解析XML文件并获取Document对象:

Document document = builder.parse(new File("file.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;
        // 处理元素
    }
}

使用SAX解析XML

SAX(Simple API for XML)是事件驱动的流式解析方式,适合处理大型XML文件,内存占用较少。

创建SAXParser对象:

SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser parser = factory.newSAXParser();

自定义Handler类继承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) {
        // 处理结束标签
    }
}

执行解析:

parser.parse("file.xml", new MyHandler());

使用JDOM解析XML

JDOM是专为Java优化的XML解析库,API更简洁。

创建SAXBuilder并获取Document对象:

SAXBuilder builder = new SAXBuilder();
Document document = builder.build(new File("file.xml"));

获取根元素并遍历:

Element root = document.getRootElement();
List<Element> children = root.getChildren();
for (Element child : children) {
    String name = child.getName();
    String value = child.getText();
}

使用DOM4J解析XML

DOM4J是另一个流行的Java XML解析库,性能优异且功能丰富。

创建SAXReader并读取XML文件:

SAXReader reader = new SAXReader();
Document document = reader.read(new File("file.xml"));

获取根节点并遍历:

Element root = document.getRootElement();
for (Iterator<Element> it = root.elementIterator(); it.hasNext();) {
    Element element = it.next();
    String name = element.getName();
    String text = element.getText();
}

使用StAX解析XML

StAX(Streaming API for XML)提供基于指针的XML解析方式,结合了DOM和SAX的优点。

创建XMLInputFactory和XMLStreamReader:

XMLInputFactory factory = XMLInputFactory.newInstance();
XMLStreamReader reader = factory.createXMLStreamReader(new FileInputStream("file.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();
        // 处理文本内容
    }
}

java如何解析xml文件

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

相关文章

实现.vue文件

实现.vue文件

创建.vue文件的基本结构 一个标准的.vue文件包含三个部分:模板(template)、脚本(script)和样式(style)。这种结构允许开发者在一个文件中管理组件的HTML、JavaScrip…

php实现文件下载

php实现文件下载

PHP 实现文件下载的方法 使用 header() 函数强制下载 设置正确的 HTTP 头信息,强制浏览器下载文件而不是直接打开。 $file = 'path/to/file.pdf'; if (…

css文件怎么制作

css文件怎么制作

创建CSS文件的基本步骤 CSS文件用于定义网页的样式,可以与HTML文件分离,便于管理和维护。以下是创建CSS文件的方法: 新建文本文件 使用任意文本编辑器(如Notepad++、VS Code…

php实现文件下载

php实现文件下载

PHP实现文件下载的方法 通过PHP实现文件下载功能,可以采用多种方式,以下是几种常见的实现方法: 使用header()函数强制下载 设置HTTP头信息,强制浏览器下载文件而非直接打开: $fi…

java如何学习

java如何学习

学习Java的有效方法 理解基础概念 Java是一门面向对象的编程语言,掌握基础概念如变量、数据类型、运算符、控制语句(if-else、循环)是必要的。面向对象的核心概念包括类、对象、继承、多态和封装…

java如何自学

java如何自学

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