java jdom进行xml的增删改差_java使用DOM对XML文档进行增删改查操作实例代码
本文研究的主要是java使用DOM对XML文档进行增删改查操作的相关代码,具体实例如下所示。
源代码:
package com.zc.homeWork18;
import java.io.File;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpressionException;
import javax.xml.xpath.XPathFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class XMLWriter {
private static String xmlPath = "src\\com\\zc\\homeWork18\\MyXml.xml";
public static void getFamilyMemebers() {
/*
* 创建文件工厂实例
*/
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
// 如果创建的解析器在解析XML文档时必须删除元素内容中的空格,则为true,否则为false
dbf.setIgnoringElementContentWhitespace(true);
try {
/*
* 创建文件对象
*/
DocumentBuilder db = dbf.newDocumentBuilder();// 创建解析器,解析XML文档
Document doc = db.parse(xmlPath); // 使用dom解析xml文件
/*
* 历遍列表,进行XML文件的数据提取
*/
// 根据节点名称来获取所有相关的节点
NodeList sonlist = doc.getElementsByTagName("son");
for (int i = 0; i < sonlist.getLength(); i++) // 循环处理对象
{
// 节点属性的处理
Element son = (Element) sonlist.item(i);
// 循环节点son内的所有子节点
for (Node node = son.getFirstChild(); node != null; node = node
.getNextSibling()) {
// 判断是否为元素节点
if (node.getNodeType() == Node.ELEMENT_NODE) {
String name = node.getNodeName();
String value = node.getFirstChild().getNodeValue();
System.out.println(name + " : " + value);
}
}
}
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
// 修改
public static void modifySon() {
// 创建文件工厂实例
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setIgnoringElementContentWhitespace(true);
try {
// 从XML文档中获取DOM文档实例
DocumentBuilder db = dbf.newDocumentBuilder();
// 获取Document对象
Document xmldoc = db.parse(xmlPath);
// 获取根节点
Element root = xmldoc.getDocumentElement();
// 定位id为001的节点
Element per = (Element) selectSingleNode("/father/son[@id='001']",root);
// 将age节点的内容更改为28
per.getElementsByTagName("age").item(0).setTextContent("28");
// 保存
TransformerFactory factory = TransformerFactory.newInstance();
Transformer former = factory.newTransformer();
former.transform(new DOMSource(xmldoc),new StreamResult(new File(
xmlPath)));
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
// 获取目标节点,进行删除,最后保存
public static void discardSon() {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setIgnoringElementContentWhitespace(true);
try {
DocumentBuilder db = dbf.newDocumentBuilder();
Document xmldoc = db.parse(xmlPath);
// 获取根节点
Element root = xmldoc.getDocumentElement();
// 定位根节点中的id=002的节点
Element son = (Element) selectSingleNode("/father/son[@id='002']",root);
// 删除该节点
root.removeChild(son);
// 保存
TransformerFactory factory = TransformerFactory.newInstance();
Transformer former = factory.newTransformer();
former.transform(new DOMSource(xmldoc),new StreamResult(new File(
xmlPath)));
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
// 新增节点
public static void createSon() {
// 创建文件工厂实例
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setIgnoringElementContentWhitespace(false);
try {
DocumentBuilder db = dbf.newDocumentBuilder();
// 创建Document对象
Document xmldoc = db.parse(xmlPath);
// 获取根节点
Element root = xmldoc.getDocumentElement();
// 创建节点son,设置对应的id为004
Element son = xmldoc.createElement("son");
son.setAttribute("id","004");
// 创建节点name
Element name = xmldoc.createElement("name");
name.setTextContent("小儿子");
son.appendChild(name);
// 创建节点age
Element age = xmldoc.createElement("age");
age.setTextContent("0");
son.appendChild(age);
// 把son添加到根节点中
root.appendChild(son);
// 保存
TransformerFactory factory = TransformerFactory.newInstance();
Transformer former = factory.newTransformer();
former.transform(new DOMSource(xmldoc),new StreamResult(new File(
xmlPath)));
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
// 修改节点信息
public static Node selectSingleNode(String express,Element source) {
Node result = null;
//创建XPath工厂
XPathFactory xpathFactory = XPathFactory.newInstance();
//创建XPath对象
XPath xpath = xpathFactory.newXPath();
try {
result = (Node) xpath.evaluate(express,source,XPathConstants.NODE);
System.out.println(result);
} catch (XPathExpressionException e) {
System.out.println(e.getMessage());
}
return result;
}
// 打印
public static void main(String[] args) {
getFamilyMemebers();
System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
modifySon();
System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
System.out.println("修改数据");
getFamilyMemebers();
System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
discardSon();
System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
System.out.println("删除数据");
getFamilyMemebers();
System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
createSon();
System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
System.out.println("添加数据");
getFamilyMemebers();
}
}
XML文件
老大
20
老二
18
老三
13
总结
以上就是本文关于java使用DOM对XML文档进行增删改查操作实例代码的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!
总结
如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您喜欢交流学习经验,点击链接加入交流1群:1065694478(已满)交流2群:163560250
java jdom进行xml的增删改差_java使用DOM对XML文档进行增删改查操作实例代码相关推荐
- 使用Qt创建XML文档及XML文档的增删改
目录名字 使用Qt创建XML文档及XML文档的增删改 XML文档的操作 :QXml + QFile+QTextStream 创建XML的一般步骤: XML 文档的操作(添加.查找.更新.删除) 添加的 ...
- python数据库教程_Python连接mysql数据库及简单增删改查操作示例代码
1.安装pymysql 进入cmd,输入 pip install pymysql: 2.数据库建表 在数据库中,建立一个简单的表,如图: 3.简单操作 3.1查询操作 #coding=utf-8 #连 ...
- [MongoDB] MongoDB的基本操作以及文档的增删改查
参考视频 链接:https://pan.baidu.com/s/1tAWPEC8yppyrPupkUFdCWQ 提取码:gdn8 MongoDB的基本操作 基本概念 生活中:仓库.架子.物品 计算机: ...
- 分布式搜索elasticsearch 索引文档的增删改查 入门
分布式搜索elasticsearch 索引文档的增删改查 入门 1.RESTful接口使用方法 为了方便直观我们使用Head插件提供的接口进行演示,实际上内部调用的RESTful接口. RESTful ...
- MongoDB 文档字段增删改
MongoDB 基于CRUD(create,read,update,delete)方式实现了对集合上的文档进行增删改查.对于集合上字段的增删改,可以使用set或者unset修改器来实现.也可以使用文档 ...
- python操作数据库教程_Python连接mysql数据库及简单增删改查操作示例代码
1.安装pymysql 进入cmd,输入 pip install pymysql: 2.数据库建表 在数据库中,建立一个简单的表,如图: 3.简单操作 3.1查询操作 #coding=utf-8 #连 ...
- mongodb对数组元素及内嵌文档进行增删改查操作(转)
from:https://my.oschina.net/132722/blog/168274 比如我有一个user类,他包含一个标签属性,这个标签是一个数组,数组里面的元素是内嵌文档,格式如下: &l ...
- 本篇文档介绍如何手动在ECS实例上部署Java web项目
本篇文档介绍如何手动在ECS实例上部署Java web项目.适用于刚开始使用阿里云进行建站的个人用户. 项目配置 { .section} 本篇教程在示例步骤中使用了以下版本的软件.操作时,请您以实际软 ...
- java计算机毕业设计html5健身房信息管理系统源码+mysql数据库+系统+lw文档+部署
java计算机毕业设计html5健身房信息管理系统源码+mysql数据库+系统+lw文档+部署 java计算机毕业设计html5健身房信息管理系统源码+mysql数据库+系统+lw文档+部署 本源码技 ...
最新文章
- 天下武功,唯快不破,论推荐系统的“实时性”
- java泛型之有界类型
- react源代码重点难点分析
- 前端学习(1897)vue之电商管理系统电商系统之实现搜索功能
- [iOS]利用Appicon and Launchimage Maker生成并配置iOSApp的图标和启动页
- 【课后习题】数值计算方法期末复习
- 客服聊天系统,WeLive客服聊天系统
- 数据库Sharding的基本思想和切分策略(转)
- 数据库系统概论-作业(设计本科生事务管理数据库)
- 会玩儿!网易云音乐推出“还郑州一个七夕”特别策划
- 启动器Android标准,【转】各款安卓启动器评测(之我见)
- Word公式插件Mathpix Snip
- Python打造一个互动交友聊天室,免费在线聊天
- 一个P,V操作的习题
- C++中的log函数
- 探秘 App Clips
- bcache / 如何使用bcache构建LVM,软RAID / 如何优化bcache
- Spring个人笔记
- 从计算机屏幕上抓取动态操作过程 也称为,计算机学业水平考试单项选择题综合训练一 答案复习过程...
- 分布式存储系统——《高性能分布式存储MongoDB》
热门文章
- 如何双启动Linux和Windows
- 业务分析岗所需具备的技能_成功的业务分析师需要具备的3种技能
- cpu飙升_为什么Go的人气飙升
- devops 解决了啥问题_您的DevOps有什么问题?
- 线上排查 | 线上Redis负载暴涨100%,业务中断,这样排查很赞!
- Bootstrap 输入框组中控件的尺寸
- php判断手机浏览器,php 获取 手机浏览器的信息 | 学步园
- 您的浏览器由所属组织管理_FB频繁被封,关于多账号环境管理的知识你掌握了吗?...
- php 5.4 安装xcache,安装xcache为你的PHP加速
- 可以分屏的软件_Mac上的分屏功能,让你办公更高效