dom 修改xml java_如何使用DOM方式修改XML文件内容

news/2024/8/26 3:16:22 标签: dom 修改xml java

如何使用DOM方式修改XML文件内容

发布时间:2020-07-09 15:23:57

来源:亿速云

阅读:125

作者:Leah

本篇文章为大家展示了如何使用DOM方式修改XML文件内容,代码简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

DOM解析方式也可用于修改XML数据,我们可以使用它完成新增元素、删除元素、修改元素值、修改元素属性等操作。

我们的XML文件,内容如下:

employee.xml<?xml version="1.0" encoding="UTF-8" standalone="no"?>

Pankaj

29

Java Developer

Male

Lisa

35

CSS Developer

Female

我们将修改XML文件的内容:

1.根据员工的性别(gender)修改”id”属性值,性别为男(Male)的id属性值中追加”M”,为女(Female)的id属性值追加”F”。

2.修改name元素的值,全部变成大写。

3.”gender”元素已经没有存在的意义了,我们删除它。

4.在employee节点下新增一个”salary”节点。

当我们完成上述操作后,将内容保存在一个新的xml文件中。

下面是使用DOM方式解析的Java程序代码:

ModifyXMLDOM.javapackage com.journaldev.xml;

import java.io.File;

import java.io.IOException;

import javax.xml.parsers.DocumentBuilder;

import javax.xml.parsers.DocumentBuilderFactory;

import javax.xml.parsers.ParserConfigurationException;

import javax.xml.transform.OutputKeys;import javax.xml.transform.Transformer;

import javax.xml.transform.TransformerException;

import javax.xml.transform.TransformerFactory;

import javax.xml.transform.dom.DOMSource;

import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.Document;import org.w3c.dom.Element;

import org.w3c.dom.Node;import org.w3c.dom.NodeList;

import org.xml.sax.SAXException;public class ModifyXMLDOM {

public static void main(String[] args) {

String filePath = "employee.xml";

File xmlFile = new File(filePath);

DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();

DocumentBuilder dBuilder;

try {

dBuilder = dbFactory.newDocumentBuilder();

Document doc = dBuilder.parse(xmlFile);

doc.getDocumentElement().normalize();

//update attribute value

updateAttributeValue(doc);

//update Element value

updateElementValue(doc);

//delete element

deleteElement(doc);

//add new element

addElement(doc);

//write the updated document to file or console

doc.getDocumentElement().normalize();

TransformerFactory transformerFactory = TransformerFactory.newInstance();

Transformer transformer = transformerFactory.newTransformer();

DOMSource source = new DOMSource(doc);

StreamResult result = new StreamResult(new File("employee_updated.xml"));

transformer.setOutputProperty(OutputKeys.INDENT, "yes");

transformer.transform(source, result);

System.out.println("XML file updated successfully");

} catch (SAXException | ParserConfigurationException | IOException | TransformerException e1) {

e1.printStackTrace();

}

}

private static void addElement(Document doc) {

NodeList employees = doc.getElementsByTagName("Employee");

Element emp = null;

//loop for each employee

for(int i=0; i

emp = (Element) employees.item(i);

Element salaryElement = doc.createElement("salary");

salaryElement.appendChild(doc.createTextNode("10000"));

emp.appendChild(salaryElement);

}

}

private static void deleteElement(Document doc) {

NodeList employees = doc.getElementsByTagName("Employee");

Element emp = null;

//loop for each employee

for(int i=0; i

emp = (Element) employees.item(i);

Node genderNode = emp.getElementsByTagName("gender").item(0);

emp.removeChild(genderNode);

}

}

private static void updateElementValue(Document doc) {

NodeList employees = doc.getElementsByTagName("Employee");

Element emp = null;

//loop for each employee

for(int i=0; i

emp = (Element) employees.item(i);

Node name = emp.getElementsByTagName("name").item(0).getFirstChild();

name.setNodeValue(name.getNodeValue().toUpperCase());

}

}

private static void updateAttributeValue(Document doc) {

NodeList employees = doc.getElementsByTagName("Employee");

Element emp = null;

//loop for each employee

for(int i=0; i

emp = (Element) employees.item(i);

String gender = emp.getElementsByTagName("gender").item(0).getFirstChild().getNodeValue();

if(gender.equalsIgnoreCase("male")){

//prefix id attribute with M

emp.setAttribute("id", "M"+emp.getAttribute("id"));

}else{

//prefix id attribute with F

emp.setAttribute("id", "F"+emp.getAttribute("id"));

}

}

}

}

输出xml文件内容:

employee_updated.xml<?xml version="1.0" encoding="UTF-8" standalone="no"?>

PANKAJ

29

Java Developer

10000

LISA

35

CSS Developer

10000


http://www.niftyadmin.cn/n/1673930.html

相关文章

1.3.3、Java基础下__二维数组理解,定义,初始化,长度

Java系列文章目录 作者&#xff1a;Dcc_BigData 文章目录Java系列文章目录前言1、对于二维数组的理解2、二维数组定义格式(2种)3、二维数组的初始化4、动态初始化:5、静态初始化6、数组的长度7、数组元素的默认初始化值总结前言 本文要记录的大概内容&#xff1a; 二维数组理解…

c语言 函数多个参数,用C语言实现参数个数可变的函数

采用C语言编程的时候&#xff0c;函数中形式参数的数目通常是确定的&#xff0c;在调用时要依次给出与形式参数对应的所有实际参数。但在某些情况下希望函数的参数个数可以根据需要确定。典型的例子有大家熟悉的函数printf()、scanf()和系统调用execl()等。那么它们是怎样实现的…

c语言编程求预测子女身高,C语言的那些题(三) —— 编程计算身高问题完善版

发上去以后,一位看到我文章的朋友告诉我,代码逻辑上有点问题,而且分支结构过多,会在以后开发过程中影响程序运行效率,于是他告诉我应该完善哪些地方.很高兴他能够抽出时间阅读我的文章,并且花时间告诉我存在的问题.希望其他朋友也能多提意见,大家一起学习.听取了我那位朋友的意…

java生产校验码

2019独角兽企业重金招聘Python工程师标准>>> 有两种方式&#xff0c;一种jsp方式&#xff0c;一种java方式&#xff08;该方式自己改造的&#xff09; 【采用jsp方式】 服务端生成代码&#xff1a; <% page contentType"image/jpeg"import"java…

Create, Save, and Open Trace Documents

Create, Save, and Open Trace Documents 在仪器中&#xff0c;所有的工作都是在跟踪文档中完成的&#xff0c;其中包含一组工具、它们的配置设置和它们收集的数据。一旦您使用跟踪文档来配置应用程序&#xff0c;就可以保存文档以保存收集的跟踪数据&#xff0c;并稍后再打开以…

java怎么设计好看的界面_问下JAVA做出来的程序怎么把界面改的好看点啊

问下JAVA做出来的程序怎么把界面改的好看点啊RT~~~谢谢大家指教搜索更多相关的解决方案:JAVA 界面----------------解决方案--------------------------------------------------------别费这个劲了.----------------解决方案-----------------------------------------------…

计算机二级c语言编程题库100题下载,计算机二级C语言编程试题库(100题).pdf

. . . .2011,2012 年上机题 100 题库1: 第 1 题 m 个人的成绩存放在 score 数组中 &#xff0c;请编写函数 fun, 它的功能是 &#xff1a;将低于平均分的人作为函数值返回 &#xff0c;将低于平均分的分数放在 below 所指定的函数中 。答案 &#xff1a;int fun(int score[],in…

我喜欢的...

有一种压力&#xff0c;感觉自己很菜&#xff1b; 有一种排名&#xff0c;每次都是倒数&#xff1b; 有种释放&#xff0c;就是周日晚上&#xff1b; 有一种爱好&#xff0c;将所有娱乐都抛弃&#xff1b; 有一种比赛&#xff0c;历练成了受虐狂&#xff1b; 有一句句话&#x…