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技术站