当前位置:首页 > 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事件:

java如何解析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
分享给朋友:

相关文章

vue怎么实现文件树

vue怎么实现文件树

Vue 实现文件树的方法 使用递归组件实现文件树 递归组件是Vue中实现文件树的常见方法。通过组件自身调用自身,可以处理嵌套的目录结构。 <template> <div>…

js实现文件下载

js实现文件下载

使用 a 标签下载文件 通过动态创建 a 标签并设置 download 属性实现文件下载。适用于已知文件 URL 或 Blob 数据的情况。 function downloadFile(url, f…

如何运行java

如何运行java

运行Java程序的方法 安装Java开发工具包(JDK) 确保系统已安装JDK。可通过命令行输入 java -version 检查是否安装。若未安装,需从Oracle官网或OpenJDK下载并配置环境…

java如何打开

java如何打开

安装Java开发环境 下载并安装Java Development Kit (JDK),推荐从Oracle官网或OpenJDK获取最新版本。安装完成后配置环境变量,确保JAVA_HOME和PATH变量正…

java程序如何运行

java程序如何运行

编写Java代码 使用文本编辑器或IDE(如IntelliJ IDEA、Eclipse)编写Java源代码,保存为.java文件。例如: public class HelloWorld {…

vue文件底层实现

vue文件底层实现

Vue 文件的底层实现 Vue 单文件组件(SFC,即 .vue 文件)的底层实现依赖于 Vue 的编译工具链,主要包括 @vue/compiler-sfc 和构建工具(如 Vite 或 Webpac…