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日

相关文章

  • Android高级xml布局之输入框EditText设计

    当我们在Android应用程序开发中设计界面时,输入框(EditText)是经常用到的控件之一。EditText可以让用户在应用程序中输入文本、数字、邮箱等。如何设计好EditText控件,让用户在我们的应用程序中可以更加方便地输入内容呢?下面就是关于Android高级xml布局之输入框EditText设计的完整攻略。 设置EditText的属性 输入类型 …

    html 2023年5月30日
    00
  • 小度智能音箱play和青春版哪款好 小度智能音箱play和青春版区别对比

    以下是“小度智能音箱play和青春版哪款好 小度智能音箱play和青春版区别对比”的完整攻略: 小度智能音箱play和青春版哪款好 小度智能音箱play和青春版区别对比 小度智能音箱play和青春版都是百度公司推出的智能音箱产品,它们都具有语音助手、音乐播放、智能家居控制等功能。但是,它们之间还是有一些区别的。下面是小度智能音箱play和青春版的详细对比。 …

    html 2023年5月18日
    00
  • JS解决url传值出现中文乱码的另类办法

    下面是详细讲解“JS解决url传值出现中文乱码的另类办法”的完整攻略。 问题背景 当我们在url中传输中文时,往往会出现中文乱码的情况,导致传递失败。这是因为url只能传输 ASCII 码字符集,对于其他字符编码必须做特殊处理。一般来说,我们可以使用 encodeURI() 或 encodeURIComponent() 方法将中文字符转换成 URI 格式,但…

    html 2023年5月31日
    00
  • 如何根据带账号密码的WSDL地址生成JAVA代码

    生成Java代码可以使用Apache Axis2工具,它可以自动生成客户端代码从而轻松地与Web服务进行交互。以下是如何使用带有账号密码的WSDL地址生成Java代码的完整攻略: 步骤1:安装Apache Axis2 首先需要下载并安装Apache Axis2工具,下载地址:http://axis.apache.org/axis2/java/core/dow…

    html 2023年5月30日
    00
  • 在 Vue 中使用 JSX 及使用它的原因浅析

    标题:在 Vue 中使用 JSX 及使用它的原因浅析 什么是JSX JSX是一种JavaScript语法扩展,可以使用类似XML的语法来编写JavaScript代码。 为什么要在Vue中使用JSX 在Vue中使用JSX可以让我们构建组件更加灵活且易于维护,以下是几个原因: 更加灵活的模板结构在使用模板语法我们有一些限制,如只能使用单个根元素包含整个模板,还有…

    html 2023年5月30日
    00
  • 详解mybatis @SelectProvider 注解

    Mybatis是一款流行的ORM框架,使得开发者可以使用Java编程语言操作数据库,而不需要编写冗长的SQL语句。 Mybatis还提供了一些注解,允许开发者在Java接口中直接使用可读性更高的注解,以及一些组合的注解来执行数据库操作。其中@SelectProvider是一个能够帮助生成可定制化的SQL语句和动态参数的注解。 什么是@SelectProvid…

    html 2023年5月30日
    00
  • 解析linq to xml操作XML的示例分析

    针对“解析linq to xml操作XML的示例分析”的完整攻略,我来进行详细讲解。 一、理解Linq to XML 1.1、什么是Linq to XML? Linq to XML是LINQ技术的一部分,它可用于操作XML文档并解析其内容。它提供了一种对象模型,该模型是面向文档的,可轻松地读取、修改和创建XML文档。 1.2、为什么要使用Linq to XM…

    html 2023年5月30日
    00
  • JS解析XML实例分析

    JS解析XML实例分析 在前端开发中,我们常常需要处理XML数据格式,通过使用JavaScript解析XML可以轻易实现对XML的解析操作。本文将为读者介绍基于JavaScript解析XML的两种方式,DOM方式与SAX方式,并提供相应的示例程序。 DOM方式解析XML DOM(Document Object Model,文档对象模型)方式解析XML是将XM…

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