XML文档的简易增删查改

dom4j解析
一、利用dom4j操作元素节点
1.查询第一本书的书名,并输出到控制台
2.给第一本书添加一个特价节点, 并修改第一本书的售价节点的内容为19.8元
3.删除第二本书的作者节点
二、利用dom4j操作属性节点
1.给第一本书添加一个属性,如:出版社="清华大学出版社"
2.在控制台上打印输出第一本书的出版社属性的值, 并更新属性的值为“人民出版社”
3.删除第一本书的出版社属性
-------------------------------------------
<?xml version="1.0" encoding="utf-8" ?>
<书架>
<书>
<书名>数据结构</书名>
<作者>严蔚敏</作者>
<售价>29.00元</售价>
</书>
<书>
<书名>高等数学</书名>
<作者>同济大学数学系</作者>
<售价>55.00元</售价>
</书>
</书架>
-------------------------------------------

代码实现如下:

import java.io.FileWriter;
import java.util.Iterator;

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;


public class DomTest {
/*
* 一、利用dom4j操作元素节点
1.查询第一本书的书名,并输出到控制台
2.给第一本书添加一个特价节点, 并修改第一本书的售价节点的内容为19.8元
3.删除第二本书的作者节点
二、利用dom4j操作属性节点
1.给第一本书添加一个属性,如:出版社="清华大学出版社"
2.在控制台上打印输出第一本书的出版社属性的值, 并更新属性的值为“人民出版社”
3.删除第一本书的出版社属性
*/
@SuppressWarnings("deprecation")
public static void main(String[] args) throws Exception {
//创建一个输入流,使xml文件成为一个document,先建立一个对象reader,然后
//用这个对象去调用方法
SAXReader reader = new SAXReader();

//读取xml文件
Document doc = reader.read("src/1.xml");
//查询第一本书的名字,并输出到控制台
//先获取根目录
Element root =doc.getRootElement();
//迭代获取下面的元素(子目录)
Iterator it1 = root.elementIterator("书");
//获取二级子目录
Element e1 = (Element) it1.next();
Iterator it2 = e1.elementIterator("书名");
Element e2 = (Element) it2.next();
System.out.println(e2.getName() "---" e2.getText());
//以上内容完成了查的工作
//2.给第一本书添加一个特价节点, 并修改第一本书的售价节点的内容为19.8元
//创建一个书下面的新的节点为“特价”
Element e3 = e1.addElement("特价");
Iterator it4 = e1.elementIterator("售价");
Element e6 =(Element) it4.next();
e6.setText("19.8元");

//3.删除第二本书的作者节点
Element e4 = (Element) it1.next();
Iterator it3 = e4.elementIterator("作者");
Element e5 = (Element) it3.next();
boolean b = e4.remove(e5);
System.out.println(b);

//给第一本书添加一个属性,如:出版社="清华大学出版社"
//设置后返回的是该元素,也就是e7和e1是同一个
Element e7 = e1.addAttribute("出版社", "清华大学出版社");
//在控制台上打印输出第一本书的出版社属性的值, 并更新属性的值为“人民出版社”
Attribute a = e1.attribute("出版社");
System.out.println(a.getValue());
a.setValue("人民 出版社");
System.out.println(a.getValue());
//删除第一本书的出版社属性
e1.remove(a);

OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("GBK");
XMLWriter writer = new XMLWriter(new FileWriter("src/2.xml"),format);
writer.write(doc);
writer.close();
}

}


更多专业前端知识,请上 【猿2048】www.mk2048.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/364124.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

廖雪峰Java3异常处理-1错误处理-2捕获异常

1捕获异常 1.1 finally语句保证有无错误都会执行 try{...}catch (){...}finally{...} 使用try...catch捕获异常可能发生异常的语句放在try{...}中使用catch捕获对应的Exception及其子类1.2 捕获多个异常 try{...} catch() {...} catch(){...}finally{..} 使用多个catch子句&…

更新数据库

方法一&#xff1a;在对SQL数据库进行更新时&#xff0c;用CommandBuilder对像来自动构建sql命令&#xff0c;来起到更新的作用;这种方法用起来比较方便&#xff0c;具体代码如下&#xff1a; 以下代码都在xp系统下测试通过 环境&#xff1a;vs.net2005 \ sql server 2000\xpus…

在崩溃或断电后测试Lucene的索引耐久性

Lucene有用的事务功能之一是索引持久性 &#xff0c;它可以确保一旦成功调用IndexWriter.commit &#xff0c;即使操作系统或JVM崩溃或断电&#xff0c;或者您杀死-KILL JVM进程&#xff0c;重启后索引也将保持完整&#xff08;未损坏&#xff09;&#xff0c;并将反映崩溃前的…

Bash 脚本 set 命令教程

http://www.ruanyifeng.com/blog/2017/11/bash-set.html set命令是 Bash 脚本的重要环节&#xff0c;却常常被忽视&#xff0c;导致脚本的安全性和可维护性出问题。本文介绍它的基本用法&#xff0c;让你可以更安心地使用 Bash 脚本。 一、简介 我们知道&#xff0c;Bash 执行脚…

Jmeter、postman、python 三大主流技术如何操作数据库?

1、前言 只要是做测试工作的&#xff0c;必然会接触到数据库&#xff0c;数据库在工作中的主要应用场景包括但不限于以下&#xff1a; 功能测试中&#xff0c;涉及数据展示功能&#xff0c;需查库校验数据正确及完整性&#xff1b;例如商品搜索功能 自动化测试或性能测试中&a…

[转][HTML]css属性

1、字体属性(type)font-family(使用什么字体)font-style(字体的样式&#xff0c;是否斜体)&#xff1a;normal/italic/obliquefont-variant(字体大小写)&#xff1a;normal/small-capsfont-weight(字体的粗细)&#xff1a;normal/bold/bolder/lithterfont-size(字体的大小)&…

7-OKHttp使用详解,步骤挺详细的,适合初学者使用!

OKHttp使用详解&#xff0c;步骤挺详细的&#xff0c;适合初学者使用&#xff01; 一&#xff0c;OKHttp介绍 okhttp是一个第三方类库&#xff0c;用于android中请求网络。 这是一个开源项目,是安卓端最火热的轻量级框架,由移动支付Square公司贡献(该公司还贡献了Picasso和Leak…

变量与递归函数

变量与递归函数一、变量 变量分为全局变量和局部变量。 python中全局变量和局部变量的最大区别在于局部变量只能通过函数去访问&#xff0c;而全局变量可以直接访问。 举个例子&#xff1a; name linxu #全局变量 def change_name():namepython #局部变量print(name) …

使用MOXy 2.5.1快速且有点脏的JSON模式生成

因此&#xff0c;这些天我正在为即将推出的Oracle云服务开发新的REST API&#xff0c;因此我需要做的一件事情就是能够为模型中的bean自动生成JSON模式。 我正在使用MOXy从POJO生成JSON&#xff0c;从EclipseLink 2.5.1版本开始&#xff0c;它现在具有从bean模型生成JSON模式的…

手机端input[type=date]的placeholder不起作用

<div class"input clearfix"><label class"fl">起始日期</label><input class"fl text_date" type"date" name"" value"" placeholder"年/月/日" /></div><div cla…

Python中的TCP编程,实现客户端与服务器的聊天(socket)

参考大神blog:自己再写一个 https://blog.csdn.net/qq_31187881/article/details/79067644转载于:https://www.cnblogs.com/studybrother/p/10306903.html

利用ASP.NET向服务器上传文件[转]

文件上传技术是一个很实用的技术&#xff0c;有着很广泛的应用&#xff0c;在ASP.NET自身的前一个版本ASP里实现这个功能&#xff0c;就必须使用第三方的组件或者自己开发组件了&#xff0c;现在&#xff0c;用ASP.NET实现起来就简单得多了&#xff0c;我们不需要使用任何组件就…

JavaSE:如何设置/获取您自己的文件和目录属性

在上一篇文章“确定特定文件系统支持的视图”中 &#xff0c;了解如何询问文件系统存储&#xff0c;并了解特定文件属性视图的可支持性。 简而言之&#xff0c;我们将探索最高级和重要的文件属性视图之一&#xff0c;即用户定义的文件属性视图 。 特别是&#xff0c;在系统之…

java中HashMap详解

HashMap 和 HashSet 是 Java Collection Framework 的两个重要成员&#xff0c;其中 HashMap 是 Map 接口的常用实现类&#xff0c;HashSet 是 Set 接口的常用实现类。虽然 HashMap 和 HashSet 实现的接口规范不同&#xff0c;但它们底层的 Hash 存储机制完全一样&#xff0c;甚…

java代码编写的文本特征提取_Test1 java语言写的特征提取源代码,有搞文字识别的可以下载一看,简单易学 Develop 274万源代码下载- www.pudn.com...

文件名称: Test1下载 收藏√ [5 4 3 2 1 ]开发工具: Java文件大小: 35 KB上传时间: 2015-03-02下载次数: 46提 供 者: 常杰详细说明&#xff1a;java语言写的特征提取源代码&#xff0c;有搞文字识别的可以下载一看&#xff0c;简单易学-Feature extraction of the Java …

Iframe父页面与子页面之间的相互调用

父页面&#xff1a; <!DOCTYPE html> <html> <head><title>parents</title><meta charset"UTF-8"> </head> <body> <div id"default">div内容</div> <iframe src"child.html" i…

c# HashTable (哈希表)

HashTable 哈希表 也是System.Collections集合下的数据结构类 它储存的也是Object类型的对象 但是它在内存中是散列排布的 因为这个特性&#xff0c;非常适合存储大量的数据 在HashTable中一个键只能对应一个值&#xff0c;一个值可以对应多个键&#xff08;多对一&#xff09;…

Winform DataGridView数据绑定问题

DataGridView 绑定的数据源如果是DataTable、DataSet &#xff0c;在绑定后添加删除DataTable中的数据&#xff0c; DataGridView控件中的数据会自动改变&#xff0c;然而绑定的对象若是List<>之类的&#xff0c;修改List<>集合中的数据后&#xff0c;DataGridView…

盒模型应用

盒模型应用 改变宽高范围 默认情况下&#xff0c;width 和 height 设置的是内容盒宽高。 页面重构师&#xff1a;将psd文件&#xff08;设计稿&#xff09;制作为静态页面 衡量设计稿尺寸的时候&#xff0c;往往使用的是边框盒&#xff0c;但设置width和height&#xff0c;则设…

Spring集成–配置Web服务客户端超时

介绍 在Spring Integration的支持下&#xff0c;您的应用程序可以使用出站Web服务网关来调用Web服务。 调用由该网关处理&#xff0c;因此您只需要担心构建请求消息和处理响应。 但是&#xff0c;使用这种方法并不明显&#xff0c;如何配置其他选项&#xff0c;例如设置超时或操…