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日

相关文章

  • Spring AspectJ 实现AOP的方法你了解吗

    Spring框架提供了两种AOP的实现方式,其中一种是AspectJ的实现方式。AspectJ是一个基于Java语言的AOP的实现框架,使用静态的代码编译和动态的字节码编织来实现AOP。而Spring AspectJ是Spring框架对AspectJ框架进行的整合和封装,使用Spring框架可以更加方便地使用AspectJ来实现AOP。 下面,我们将详细讲解…

    html 2023年5月30日
    00
  • linux vim配置文件(语法高亮)

    下面是关于“Linux Vim配置文件(语法高亮)”的完整攻略: 1. Vim配置文件介绍 Vim配置文件是为了满足用户自定义配置的需求而存在的。Vim的配置文件名称为.vimrc,一般存放在用户主目录下。通过使用vim编辑器打开该文件,用户可以针对自己的需求进行配置,如更改键位映射、增加语法高亮等。 2. 语法高亮设置 Vim自带的语法高亮功能可以使文本编…

    html 2023年5月30日
    00
  • 分割GBK中文遭遇乱码的解决方法

    问题描述: 在处理GBK编码的中文文本文件时,常常会遇到中文字符乱码的问题。这是由于GBK编码的中文字符占用了两个字节,而一些编辑器或工具无法正确显示这些字符,导致出现乱码。那么如何解决这种问题呢? 解决方法: 在处理GBK编码的中文文本文件时,需要注意以下两点: 1.读取数据时需要将编码设置为GBK 如果使用Python进行文件读取,可以在打开文件时指定编…

    html 2023年5月31日
    00
  • 什么叫抖音月付什么意思?如何开通抖音月付功能

    以下是“什么叫抖音月付什么意思?如何开通抖音月付功能”的完整攻略: 什么叫抖音月付?如何开通抖音月付功能? 抖音月付是一种抖音付费会员服务,用户可以通过月付的方式获得更多的特权和服务。下面是一些开通抖音月付功能的教程,可以帮助用户开通抖音月付功能。 教程1:在抖音中开通月付功能 用户可以在抖音中开通月付功能。用户需要在抖音中选择“我的”页面,然后选择“会员中…

    html 2023年5月18日
    00
  • 巧妙mybatis避免Where 空条件的尴尬

    针对“巧妙mybatis避免Where 空条件的尴尬”的问题,我将为您提供以下完整攻略。 什么是Where空条件的尴尬? 在使用Mybatis进行条件查询时,如果某一个或多个查询条件传入的值为空,那么在拼接SQL语句时就会出现WHERE后面没有任何条件的情况,这样不仅会对查询性能造成一定的影响,还降低了查询的准确性。 如何巧妙避免Where空条件的尴尬? 为…

    html 2023年5月30日
    00
  • 关于Mybatis的mapper接口函数重载问题

    在Mybatis中,我们将SQL语句封装在Mapper接口方法中,然后调用SqlSession中的相应方法来执行SQL语句。在Mapper接口中,如果出现了同名方法但参数不同的情况,就会出现Mapper接口函数重载的问题,接下来详细讲解一下解决这个问题的方法。 问题现象 假设我们有一个UserMapper接口,其中定义了两个方法: getUserById(I…

    html 2023年5月30日
    00
  • mindmanager怎么用?中文版mindmanager使用教程

    MindManager是一款流程图和思维导图软件,它可以帮助用户更好地组织和展示思路。以下是中文版MindManager使用教程的详细攻略: 步骤1:创建新的思维导图 打开MindManager软件。 单击“文件”菜单,选择“新建”。 选择“空白模板”或“模板库”中的一个模板。 在“主题”框中输入主题名称。 在“分支”框中输入分支名称。 单击“创建”按钮。 …

    html 2023年5月17日
    00
  • python中urllib.unquote乱码的原因与解决方法

    下面我将详细讲解“Python 中 urllib.unquote 乱码的原因与解决方法”的攻略。 问题描述 在 Python 中使用 urllib.unquote 对 URL 解码时,有时会出现乱码的问题,如下所示: import urllib url = ‘https://www.example.com/%E6%88%91%E6%98%AF%E4%B8%A…

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