Java对XML文件增删改查操作示例

Java对XML文件的增删改查操作攻略

1. XML文件的读取

在 Java 中实现 XML 文件的读取,通常使用 DOM(Document Object Model)或 SAX(Simple API for XML)这两种方式。

DOM 是 W3C 组织推荐的一种用于在程序中处理 XML 文档的标准 API,它将 XML 文档加载到内存中,以树形结构表示,并允许开发人员对该树执行操作。下面是一个基本的 DOM 读取 XML 文件的示例:

import javax.xml.parsers.*;
import org.w3c.dom.*;
import java.io.*;

public class DomReader {
  public static void main(String[] args) throws Exception {     
    //创建 DocumentBuilderFactory 对象
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    // 创建DocumentBuilder对象
    DocumentBuilder builder = factory.newDocumentBuilder();
    // 读取XML文件到Document对象中
    Document doc = builder.parse(new File("example.xml"));
    // 输出根元素名字
    System.out.println("根元素名称:" + doc.getDocumentElement().getNodeName());
  }
}

2. XML文件的写入

Java 中实现 XML 文件的写入,通常使用 DOM 或 JAXB(Java Architecture for XML Binding)这两种方式。

DOM 在创建 XML 文件时,需要调用 Document 对象的 createElement()、createTextNode()、appendChild() 等方法,通过递归调用这些方法,可以创建任意复杂度的 XML 文件。下面是一个使用 DOM 实现向 XML 文件中写入数据的示例:

import javax.xml.parsers.*;
import org.w3c.dom.*;
import java.io.*;

public class DomWriter {
  public static void main(String[] args) throws Exception { 
    // 创建 DocumentBuilderFactory 对象
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    // 创建 DocumentBuilder 对象
    DocumentBuilder builder = factory.newDocumentBuilder();
    // 创建 Document 对象
    Document doc = builder.newDocument();
    // 创建根元素
    Element root = doc.createElement("employees");
    // 添加根元素到 Document 对象中
    doc.appendChild(root);
    // 创建 employee 元素
    Element employee = doc.createElement("employee");
    // 添加 attribute 到 employee 元素中
    employee.setAttribute("id", "001");
    // 创建 name 元素
    Element name = doc.createElement("name");
    // 创建 name 元素的文本节点
    Text nameText = doc.createTextNode("张三");
    // 将文本节点添加到 name 元素中
    name.appendChild(nameText);
    // 将 name 元素添加到 employee 元素中
    employee.appendChild(name);
    // 创建 age 元素
    Element age = doc.createElement("age");
    // 创建 age 元素的文本节点
    Text ageText = doc.createTextNode("25");
    // 将文本节点添加到 age 元素中
    age.appendChild(ageText);
    // 将 age 元素添加到 employee 元素中
    employee.appendChild(age);
    // 将 employee 元素添加到根元素中
    root.appendChild(employee);
    // 将 Document 对象输出到文件中
    TransformerFactory tf = TransformerFactory.newInstance();
    Transformer transformer = tf.newTransformer();
    transformer.setOutputProperty(OutputKeys.ENCODING, "GB2312");
    transformer.setOutputProperty(OutputKeys.INDENT, "yes");
    // 换行符兼容 Windows、Linux、Mac OS X
    transformer.setOutputProperty(OutputKeys.LINE_SEPARATOR, System.getProperty("line.separator"));
    // 生成XML文件并将它输出到文件中
    transformer.transform(new DOMSource(doc), new StreamResult(new File("employee.xml")));
  }
}

3. XML文件的修改

DOM 也可用于对 XML 文件的节点进行修改操作,只需要利用 Document 对象获取要修改的节点,然后执行相关的 DOM API 即可。下面是一个使用 DOM 实现修改 XML 文件的节点的示例:

import javax.xml.parsers.*;
import org.w3c.dom.*;
import java.io.*;

public class DomUpdater {
  public static void main(String[] args) throws Exception { 
    // 创建 DocumentBuilderFactory 对象
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    // 创建 DocumentBuilder 对象
    DocumentBuilder builder = factory.newDocumentBuilder();
    // 读取 XML 文件到 Document 对象中
    Document doc = builder.parse(new File("employee.xml"));
    // 根据 id 属性查找元素
    Element element = (Element)doc.getElementsByTagName("employee").item(0);
    // 修改 age 元素的值
    element.getElementsByTagName("age").item(0).setTextContent("30");
    // 将 Document 对象输出到文件中
    TransformerFactory tf = TransformerFactory.newInstance();
    Transformer transformer = tf.newTransformer();
    transformer.setOutputProperty(OutputKeys.ENCODING, "GB2312");
    transformer.setOutputProperty(OutputKeys.INDENT, "yes");
    transformer.transform(new DOMSource(doc), new StreamResult(new File("employee.xml")));
  }
}

4. XML文件的删除

DOM 也可用于删除 XML 文件的节点。下面是一个使用 DOM 实现删除 XML 文件节点的示例:

import javax.xml.parsers.*;
import org.w3c.dom.*;
import java.io.*;

public class DomDeleter {
  public static void main(String[] args) throws Exception { 
    // 创建 DocumentBuilderFactory 对象
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    // 创建 DocumentBuilder 对象
    DocumentBuilder builder = factory.newDocumentBuilder();
    // 读取 XML 文件到 Document 对象中
    Document doc = builder.parse(new File("employee.xml"));
    // 根据 id 属性查找元素
    Element element = (Element)doc.getElementsByTagName("employee").item(0);
    // 删除元素
    element.getParentNode().removeChild(element);
    // 将 Document 对象输出到文件中
    TransformerFactory tf = TransformerFactory.newInstance();
    Transformer transformer = tf.newTransformer();
    transformer.setOutputProperty(OutputKeys.ENCODING, "GB2312");
    transformer.setOutputProperty(OutputKeys.INDENT, "yes");
    transformer.transform(new DOMSource(doc), new StreamResult(new File("employee.xml")));
  }
}

以上是 Java 对 XML 文件增删改查的基本示例,通过这些示例可以对 Java 对 XML 的操作有一个基本的了解。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java对XML文件增删改查操作示例 - Python技术站

(0)
上一篇 2023年5月30日
下一篇 2023年5月30日

相关文章

  • 详解MyBatis XML配置解析

    详解MyBatis XML配置解析 什么是MyBatis XML配置? MyBatis XML配置是通过一个XML文件来配置MyBatis的,主要内容包括数据库连接信息、映射文件信息、插件信息等。 MyBatis XML配置解析 数据库连接信息配置 <configuration> <!–数据库连接信息–> <environm…

    html 2023年5月30日
    00
  • JavaScript XML操作 封装类

    JavaScript是一门非常强大的编程语言,它可以操作XML文档来实现数据的读取、解析、修改以及生成等操作。在实际的开发过程中,我们可能会频繁进行XML数据的操作,因此可以将这些操作进行封装,以便更好地管理和复用。 本文将介绍如何使用JavaScript封装类来进行XML的读取、解析、修改以及生成等操作,并结合两个示例说明。 1. 封装类的设计思路 首先,…

    html 2023年5月30日
    00
  • Win10 Mobile预览版10581中存储设置/SD卡出现乱码怎么办?

    以下是详细的攻略: 问题描述 在Win10 Mobile预览版10581中,有用户反映存储设置中出现了乱码,导致无法正确设置SD卡存储。这个问题可能会对用户的使用造成一定的困扰。 解决办法 方法一:重新格式化SD卡 乱码问题可能是由于SD卡格式不兼容Win10 Mobile系统导致的。因此,我们首先可以尝试重新格式化SD卡来解决问题。步骤如下: 将SD卡插入…

    html 2023年5月31日
    00
  • 编写xml没有代码提示的解决方法

    当我们在编写XML文件时,如果没有相应的编辑器或插件支持,编写XML将会非常困难,特别是缺乏代码提示功能。下面是编写XML没有代码提示的解决方法的完整攻略: 方法一:使用DTD(文档类型定义) DTD是XML的一个标准,它定义了XML文档元素、属性和实体的合法构建块。DTD允许我们为XML文档提供结构、元素以及它们的属性甚至元素的数据类型和顺序。如果我们在X…

    html 2023年5月30日
    00
  • HTML中的标签和元素的区别详解

    HTML(Hypertext Markup Language,超文本标记语言)是一种用于创建网页的标记语言。在HTML中,标签和元素是两个至关重要的概念,但它们并不是一个意思。下面将详细讲解HTML中的标签和元素的区别及其使用。 标签 标签是一种HTML代码,其通常由尖括号“<”和“>”组成,并且注明了元素的类型以及其他属性值如何组成。比如以下是…

    html 2023年5月30日
    00
  • C#操作xml文件之Linq To Xml详解

    C#操作xml文件之Linq To Xml详解 简介 Linq to Xml 是一种使用 Linq 技术访问和操作 Xml 文档的方式,相比于其他方式,它更加灵活、简洁,特别是在写查询语句时,可以使代码更加可读、易于理解。 操作步骤 1. 引入命名空间和 xml 文件 在开始使用 Linq to Xml 之前,需要引入命名空间 System.Xml.Linq…

    html 2023年5月30日
    00
  • springboot乱码问题解决方案

    让我来为您详细讲解“Spring Boot乱码问题解决方案”的完整攻略。 问题背景 随着物联网等新兴技术的不断发展,越来越多的应用开始使用Spring Boot来搭建web服务。然而,在使用Spring Boot进行开发时,很多开发者可能会遇到乱码的问题。这些乱码问题可能因为多种原因导致,例如编码不统一、请求头未设置字符集等等。在许多情况下,这些问题会给用户…

    html 2023年5月31日
    00
  • C#使用xsd文件验证XML格式是否正确的实现方法

    使用xsd文件验证XML格式是否正确的实现方法包括以下步骤: 1. 创建XSD文件 XSD(XML Schema Definition)文件是用来定义XML的结构和内容规则的文件。我们需要根据XML文件的结构和内容,编写相应的XSD文件。XSD文件可以用任何文本编辑器进行编写,以下是一个简单的XSD文件示例: <?xml version="1…

    html 2023年5月30日
    00
合作推广
合作推广
分享本页
返回顶部