本文研究的主要是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文档进行增删改查操作实例代码相关推荐

  1. 使用Qt创建XML文档及XML文档的增删改

    目录名字 使用Qt创建XML文档及XML文档的增删改 XML文档的操作 :QXml + QFile+QTextStream 创建XML的一般步骤: XML 文档的操作(添加.查找.更新.删除) 添加的 ...

  2. python数据库教程_Python连接mysql数据库及简单增删改查操作示例代码

    1.安装pymysql 进入cmd,输入 pip install pymysql: 2.数据库建表 在数据库中,建立一个简单的表,如图: 3.简单操作 3.1查询操作 #coding=utf-8 #连 ...

  3. [MongoDB] MongoDB的基本操作以及文档的增删改查

    参考视频 链接:https://pan.baidu.com/s/1tAWPEC8yppyrPupkUFdCWQ 提取码:gdn8 MongoDB的基本操作 基本概念 生活中:仓库.架子.物品 计算机: ...

  4. 分布式搜索elasticsearch 索引文档的增删改查 入门

    分布式搜索elasticsearch 索引文档的增删改查 入门 1.RESTful接口使用方法 为了方便直观我们使用Head插件提供的接口进行演示,实际上内部调用的RESTful接口. RESTful ...

  5. MongoDB 文档字段增删改

    MongoDB 基于CRUD(create,read,update,delete)方式实现了对集合上的文档进行增删改查.对于集合上字段的增删改,可以使用set或者unset修改器来实现.也可以使用文档 ...

  6. python操作数据库教程_Python连接mysql数据库及简单增删改查操作示例代码

    1.安装pymysql 进入cmd,输入 pip install pymysql: 2.数据库建表 在数据库中,建立一个简单的表,如图: 3.简单操作 3.1查询操作 #coding=utf-8 #连 ...

  7. mongodb对数组元素及内嵌文档进行增删改查操作(转)

    from:https://my.oschina.net/132722/blog/168274 比如我有一个user类,他包含一个标签属性,这个标签是一个数组,数组里面的元素是内嵌文档,格式如下: &l ...

  8. 本篇文档介绍如何手动在ECS实例上部署Java web项目

    本篇文档介绍如何手动在ECS实例上部署Java web项目.适用于刚开始使用阿里云进行建站的个人用户. 项目配置 { .section} 本篇教程在示例步骤中使用了以下版本的软件.操作时,请您以实际软 ...

  9. java计算机毕业设计html5健身房信息管理系统源码+mysql数据库+系统+lw文档+部署

    java计算机毕业设计html5健身房信息管理系统源码+mysql数据库+系统+lw文档+部署 java计算机毕业设计html5健身房信息管理系统源码+mysql数据库+系统+lw文档+部署 本源码技 ...

最新文章

  1. 天下武功,唯快不破,论推荐系统的“实时性”
  2. java泛型之有界类型
  3. react源代码重点难点分析
  4. 前端学习(1897)vue之电商管理系统电商系统之实现搜索功能
  5. [iOS]利用Appicon and Launchimage Maker生成并配置iOSApp的图标和启动页
  6. 【课后习题】数值计算方法期末复习
  7. 客服聊天系统,WeLive客服聊天系统
  8. 数据库Sharding的基本思想和切分策略(转)
  9. 数据库系统概论-作业(设计本科生事务管理数据库)
  10. 会玩儿!网易云音乐推出“还郑州一个七夕”特别策划
  11. 启动器Android标准,【转】各款安卓启动器评测(之我见)
  12. Word公式插件Mathpix Snip
  13. Python打造一个互动交友聊天室,免费在线聊天
  14. 一个P,V操作的习题
  15. C++中的log函数
  16. 探秘 App Clips
  17. bcache / 如何使用bcache构建LVM,软RAID / 如何优化bcache
  18. Spring个人笔记
  19. 从计算机屏幕上抓取动态操作过程 也称为,计算机学业水平考试单项选择题综合训练一 答案复习过程...
  20. 分布式存储系统——《高性能分布式存储MongoDB》

热门文章

  1. 如何双启动Linux和Windows
  2. 业务分析岗所需具备的技能_成功的业务分析师需要具备的3种技能
  3. cpu飙升_为什么Go的人气飙升
  4. devops 解决了啥问题_您的DevOps有什么问题?
  5. 线上排查 | 线上Redis负载暴涨100%,业务中断,这样排查很赞!
  6. Bootstrap 输入框组中控件的尺寸
  7. php判断手机浏览器,php 获取 手机浏览器的信息 | 学步园
  8. 您的浏览器由所属组织管理_FB频繁被封,关于多账号环境管理的知识你掌握了吗?...
  9. php 5.4 安装xcache,安装xcache为你的PHP加速
  10. 可以分屏的软件_Mac上的分屏功能,让你办公更高效