2024年Java中XML文件处理知识详解:包括基本介绍与可扩展性特征等

浅析Java中的XML文件处理

2024年Java中XML文件处理知识详解:包括基本介绍与可扩展性特征等

更新时间是 2024 年 11 月 12 日 11 时 35 分 54 秒,作者是 CnLg.NJ。

XML 是一种标记语言,可用于存储和传输数据。W3C(万维网联盟)在 1998 年发布了它。本文主要是和大家谈谈 Java 中关于 XML 文件处理的相关知识,有需求的可以作为参考。

目录

一、基本介绍

XML 是一种用于存储和传输数据的标记语言。它由 W3C 于 1998 年发布。XML 的设计目的是提供一种数据格式,这种格式简单、可扩展且自描述,能让数据在不同系统和应用程序间轻松传输和共享。

二、基本特征

1、可扩展性‌:

XML具备允许用户定义自身标记(标签)的特性,所以能够依据需求灵活地去表示各类数据类型,并非依赖于预先定义好的标记。

2‌、自描述性‌:

XML 文档包含着数据及其结构的信息,这样人类能够理解数据的含义,同时机器也能够理解数据的含义。

3‌、结构化‌:

XML 文档通过层级结构来组织数据,这种层级结构如同树结构。它具有父子关系,利用这种父子关系,便于表示复杂的数据结构。

4‌、跨平台‌:

XML 是一种文本格式,它具备能够在不同系统和应用程序之间进行轻松传输数据的能力,也能够在不同系统和应用程序之间实现数据的共享。

5‌、兼容性‌:

XML 能够与许多其他技术相兼容,其中包含 HTML、XSLT、JSON 等。它在 Web 服务、数据交换等领域得到了广泛的应用。

三、基本操作1. 读取XML文件

使用 DocumentBuilderFactory 来获取 DocumentBuilder,然后利用 DocumentBuilder 读取 XML 文件。

引入 javax.xml.parsers 包中的 DocumentBuilder 类。
导入 javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import java.io.File;
 
public class XMLReader {
它接收一个字符串数组作为参数,这个数组可以包含命令行参数等信息,程序可以根据这些参数进行不同的操作和处理。
创建了一个名为 xmlFile 的文件,该文件的路径是 "path/to/your/file.xml"。
DocumentBuilderFactory 是通过 DocumentBuilderFactory.newInstance()方法创建出来的。
创建一个 DocumentBuilder 对象,该对象是通过 dbFactory 的 newDocumentBuilder() 方法创建出来的。
通过 dBuilder 对 xmlFile 进行解析后得到了文档 doc 。
 
        // 获取根节点
获取文档元素并使其规范化。
System.out.println("根元素为:" + doc.getDocumentElement().getNodeName());
 
        // 遍历节点
获取文档中的所有元素节点,将其存储在 NodeList 类型的变量 nList 中,通过 doc.getElementsByTagName("*") 方法来实现。
        for (int temp = 0; temp < nList.getLength(); temp++) {
            Node nNode = nList.item(temp);
            System.out.println("\nNode #" + temp + " [" + nNode.getNodeName() + "]:");
            if (nNode.getNodeType() == Node.TEXT_NODE) {
                String nodeValue = nNode.getNodeValue().trim();
                if (nodeValue.length() > 0) {
输出“节点值:”加上节点值。
                }
            }
        }
    }
}

2. 创建XML文件

创建 XML 文件可通过使用 DocumentBuilderFactory 来实现。

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
 
public class XMLWriter {
    public static void main(String[] args) throws Exception {
        DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
        DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
创建一个名为 doc 的文档,这个文档是通过 dBuilder 新建出来的。
 
        // 创建根元素
创建一个名为 rootElement 的元素,这个元素是通过调用 doc 的 createElement 方法创建的,创建的元素名为 "Root"。
        doc.appendChild(rootElement);
 
        // 创建子元素
创建一个名为“Child”的元素 childElement,是通过 doc.createElement("Child")实现的。
doc 创建的文本节点“Value”被 childElement添加进去。
子元素被添加到根元素中。
 
        // 保存到文件
TransformerFactory 是通过 TransformerFactory.newInstance()创建出来的。
Transformer 被创建出来,创建它的是 transformerFactory,并且通过 newTransformer()方法进行创建,创建后的 Transformer 被赋值给了 transformer 这个变量。
transformer 把 OutputKeys.INDENT 的输出属性设置为“yes”。
transformer 对新的 DOMSource(doc)进行了转换操作,同时将转换后的结果输出到新的文件中,该文件路径为"path/to/your/newfile.xml",具体是通过 new StreamResult(new File("path/to/your/newfile.xml"))来实现的。
    }
}

3. 修改XML文件

修改XML文件中的元素:

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
引入 javax.xml.transform.Transformer 类。
引入 javax.xml.transform.TransformerFactory 类。
引入 javax.xml.transform.dom 包中的 DOMSource 类。
引入 javax.xml.transform.stream.StreamResult ;将 javax.xml.transform.stream.StreamResult 进行引入;导入 javax.xml.transform.stream.StreamResult 。
import java.io.File;
 
public class XMLModifier {
    public static void main(String[] args) throws Exception {
创建一个名为 xmlFile 的文件,其路径为"path/to/your/modifiedfile.xml"。
        DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
        DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
        Document doc = dBuilder.parse(xmlFile);
 
        // 修改元素值
通过 doc 获取到的元素集合中,包含名为 "Child" 的元素,这些元素被存储在 NodeList 类型的变量 nList 中。
        for (int temp = 0; temp < nList.getLength(); temp++) {
            Node nNode = nList.item(temp);
            if (nNode.getNodeType() == Node.ELEMENT_NODE) {
                Element eElement = (Element) nNode;
                eElement.setTextContent("New Value");
            }
        }
 
        // 添加新元素
        Element newChild = doc.createElement("NewChild");
        newChild.appendChild(doc.createTextNode("New Value"));
        doc.getDocumentElement().appendChild(newChild);
 
        // 删除元素
        nList = doc.getElementsByTagName("Child");
        if (nList.getLength() > 1) {
Node 这个节点是 nList 中的第一个元素,即 removeNode = nList.item(0);
removeNode 的父节点调用 removeChild 方法并传入 removeNode,从而移除了 removeNode 。
        }
 
        // 保存修改
        TransformerFactory transformerFactory = TransformerFactory.newInstance();
        Transformer transformer = transformerFactory.newTransformer();
        transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer 对新的 DOMSource(doc)进行了转换操作,并且将转换后的结果输出到了新的 File("path/to/your/modifiedfile.xml")中。
    }
}

4. 使用XPath查询XML

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
import javax.xml.xpath.XPath;
引入 javax.xml.xpath.XPathConstants 这个类。
引入 javax.xml.xpath 包中的 XPathFactory 类。
import java.io.File;
 
public class XPathExample {
    public static void main(String[] args) throws Exception {
        File xmlFile = new File("path/to/your/file.xml");
        DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
        DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
        Document doc = dBuilder.parse(xmlFile);
 
XPathFactory 被创建,创建方式是通过调用 XPathFactory 的 newInstance()方法。
        XPath xpath = xpf.newXPath();
NodeList 是通过 xpath.evaluate("//Child", doc, XPathConstants.NODESET) 得到的。
 
        for (int i = 0; i < nodeList.getLength(); i++) {
            System.out.println(nodeList.item(i).getTextContent());
        }
    }
}

五、注意事项

确保在项目中引入了必要的库和依赖。

处理 XML 时,要考虑 XML 的格式与结构,以确保代码能够正确地对 XML 元素进行访问和修改。

在修改XML文件后,记得保存更改。

异常处理在处理 XML 文件时很重要,要确保代码能妥善处理可能出现的异常情况。

这篇关于浅析 Java 中 XML 文件处理的文章到此就介绍完毕了。若想了解更多相关 Java XML 文件处理内容,可以搜索脚本之家以前的文章,或者继续浏览下面的相关文章。希望大家以后能多多支持脚本之家!

你可能想看:
« 上一篇
下一篇 »

相关推荐

java中什么是冒泡,冒泡算法

2026年09月06日

26阅读

java中冒号,java双冒号

2026年09月06日

23阅读

java中的->,java中的是什么意思

2026年09月06日

24阅读

java中的super用法,Java中super的说明

2026年09月06日

27阅读

java中反射的应用,java中反射的应用场景

2026年09月06日

23阅读

java中开关的定义,Java关键字有哪些

2026年09月06日

24阅读