XML两种读取和写入方式的例子:dom4j和jdom

一、dom4j 读写改操作,先导入jar包-1 

例子1:

 1       //dom4j读取
 2         SAXReader reader = new SAXReader();
 3         //文档对象
 4         Document document = reader.read(new File("F:\\yujun\\javaweb\\第一章\\student.xml"));
 5         //根节点对象
 6         Element root = document.getRootElement();
 7         //取得根节点的所有子节点集合
 8         List<Element> chs = root.elements();
 9
10         for(Element ch : chs) {
11             String no = ch.attributeValue("no"); //取得属性值
12             String name = ch.elementText("name");//取得子节点的文本值
13             String sex = ch.elementText("sex");//取得子节点的文本值
14             String age = ch.elementText("age");//取得子节点的文本值
15
16             System.out.println("学号:"+no+",姓名:"+name+",性别:"+sex+",年龄:"+age);
17         }

例子2:

 1         //dom4j创建新xml文件
 2         //文档
 3         Document document = DocumentHelper.createDocument();
 4         //根节点
 5         Element root = DocumentHelper.createElement("stus");
 6         //把根节点放入文档对象中
 7         document.setRootElement(root);
 8
 9         //创建stu的子节点
10         Element stu = root.addElement("stu");
11         stu.addAttribute("no", "001"); //添加属性
12         //给stu节点创建子节点
13         Element name = stu.addElement("name");
14         Element sex = stu.addElement("sex");
15         Element age = stu.addElement("age");
16         //给子节点赋值
17         name.setText("张三");
18         sex.setText("女");
19         age.setText("20");
20
21         //输出
22         XMLWriter writer = new XMLWriter(new FileOutputStream(new File("F:\\\\yujun\\\\javaweb\\\\第一章\\\\student3.xml")));
23         writer.write(document);
24         writer.close();
25         System.out.println("创建成功");

例子3:

 1         //dom4j给xml文件添加节点数据
 2
 3         //reader
 4         SAXReader reader = new SAXReader();
 5         //文档对象
 6         Document document = reader.read(new File("F:\\\\\\\\yujun\\\\\\\\javaweb\\\\\\\\第一章\\\\\\\\student3.xml"));
 7         //根节点
 8         Element root = document.getRootElement();
 9
10         //创建子节点(stu)
11         Element stu = root.addElement("stu");
12         //创建孙子节点
13         Element name = stu.addElement("name");
14         Element sex = stu.addElement("sex");
15         Element age = stu.addElement("age");
16         //赋值
17         stu.addAttribute("no", "002");
18         name.setText("李四");
19         sex.setText("女");
20         age.setText("30");
21
22         //把根节点重置到文档对象中
23         document.setRootElement(root);
24
25         //输出
26         XMLWriter writer = new XMLWriter(new FileOutputStream(new File("F:\\\\yujun\\\\javaweb\\\\第一章\\\\student3.xml")));
27         writer.write(document);
28         writer.close();
29         System.out.println("添加成功");

例子4:

 1         //使用deom4j修改xml文件数据
 2
 3         SAXReader reader = new SAXReader();
 4         Document document = reader.read(new File("F:\\yujun\\javaweb\\第一章\\student3.xml"));
 5         Element root = document.getRootElement();
 6
 7         List<Element> chs = root.elements();
 8         //stu
 9         for(Element ch : chs) {
10             String no =  ch.attributeValue("no");
11             if("002".equals(no)) {
12                 Element age = ch.element("age");//取得孩子节点
13                 age.setText("40");
14
15                 //删除节点
16                 //root.remove(ch);
17
18                 break;
19             }
20         }
21
22         //把根节点重置到文档对象中
23         document.setRootElement(root);
24
25         //输出
26         XMLWriter writer = new XMLWriter(new FileOutputStream(new File("F:\\yujun\\javaweb\\第一章\\student3.xml")));
27         writer.write(document);
28         writer.close();
29         System.out.println("修改成功");

二、jdom 读写改操作,先导入jar包-1 

例子1:

 1         //使用jdom解析mxl
 2
 3         //创建builder对象
 4         SAXBuilder builder = new SAXBuilder();
 5
 6         //通过xml文件构建文档对象
 7         Document document = builder.build(new File("F:\\yujun\\javaweb\\第一章\\student.xml"));
 8
 9
10         //获取文档中的根节点对象
11         Element root = document.getRootElement();
12
13         //获取根节点下的所有子节点对象集合
14         List<Element> chs =  root.getChildren();
15
16
17         for(Element ch : chs) {
18             //获取属性的值
19             String no = ch.getAttributeValue("no");
20             //获取子节点的文本值
21             String name = ch.getChildText("name");
22             String sex = ch.getChildText("sex");
23             String age = ch.getChildText("age");
24
25             /*Element cla =  ch.getChild("class");
26             String claId = cla.getChildText("id");
27             String claName = cla.getChildText("name");*/
28
29             //System.out.println("学号:"+no+",姓名:"+name+",性别:"+sex+",年龄:"+age+",班级id:"+claId+",班级名次:"+claName);
30             System.out.println("学号:"+no+",姓名:"+name+",性别:"+sex+",年龄:"+age);
31         }

例子2:

 1         //使用jdom创建新xml文件
 2
 3         //创建各给节点
 4         Element stu = new Element("stu");
 5         Element name = new Element("name");
 6         Element sex = new Element("sex");
 7         Element age = new Element("age");
 8
 9         //给节点赋值
10         name.setText("赵六");
11         sex.setText("女");
12         age.setText("40");
13
14         //关系
15         stu.addContent(name);
16         stu.addContent(sex);
17         stu.addContent(age);
18         stu.setAttribute("no", "004"); //设置属性
19
20         //根节点
21         Element stus = new Element("stus");
22         stus.addContent(stu);
23         Document document = new Document(stus);
24
25         //格式化对象
26         Format format = Format.getCompactFormat();
27         format.setIndent("    ");//缩进
28
29
30         //输出对象
31         XMLOutputter out = new XMLOutputter(format);
32         out.output(document, new FileOutputStream(new File("F:\\yujun\\javaweb\\第一章\\student2.xml")));
33         System.out.println("创建成功");

例子3:

 1         //使用jdom给xml文件添加节点数据
 2
 3         //builder对象
 4         SAXBuilder builder = new SAXBuilder();
 5         //文档对象
 6         Document document = builder.build(new File("F:\\\\yujun\\\\javaweb\\\\第一章\\\\student2.xml"));
 7
 8         //创建节点数据
 9         Element stu = new Element("stu");
10         Element name = new Element("name");
11         Element sex = new Element("sex");
12         Element age = new Element("age");
13         //给节点赋值
14         name.setText("abc");
15         sex.setText("女");
16         age.setText("50");
17         stu.setAttribute("no","006");
18         //关系
19         stu.addContent(name);
20         stu.addContent(sex);
21         stu.addContent(age);
22
23         //获取根节点
24         Element root = document.getRootElement();
25         root.addContent(stu);
26
27         //把root节点更新到文档中
28         document.setContent(root);
29
30         //输出对象
31         XMLOutputter out = new XMLOutputter();
32         out.output(document, new FileOutputStream(new File("F:\\\\\\\\yujun\\\\\\\\javaweb\\\\\\\\第一章\\\\\\\\student2.xml")));
33         System.out.println("添加节点数据成功");

例子4:

 1         //使用jdom修改节点数据
 2         //修改学号006的性别为:男
 3
 4         //builder对象
 5         SAXBuilder builder = new SAXBuilder();
 6         Document document = builder.build(new File("F:\\\\\\\\yujun\\\\\\\\javaweb\\\\\\\\第一章\\\\\\\\student2.xml"));
 7
 8         //根节点
 9         Element root = document.getRootElement();
10         List<Element> chs = root.getChildren();
11         for(Element ch : chs) {
12             String no = ch.getAttributeValue("no");
13             if("006".equals(no)) {
14                 Element sex = ch.getChild("sex");
15                 sex.setText("男");
16
17                 //删除
18                 //root.removeContent(ch);
19
20                 break;
21             }
22         }
23
24         document.setContent(root);
25         XMLOutputter out = new XMLOutputter();
26         out.output(document, new FileOutputStream(new File("F:\\\\\\\\yujun\\\\\\\\javaweb\\\\\\\\第一章\\\\\\\\student2.xml")));
27         System.out.println("修改成功");

原文地址:https://www.cnblogs.com/chyxOne/p/9762225.html

时间: 2024-08-29 22:02:32

XML两种读取和写入方式的例子:dom4j和jdom的相关文章

两种读取微信xml消息的方式比较

直接贴代码和结果. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Xml; using System.Xml.Serialization; using System.IO; using System.Diagnostics; namespace ConsoleApplication_xm

两种访问接口的方式(get和post)

跨机器.跨语言的远程访问形式一共有三种:scoket发送数据包.http发送请求.rmi远程连接: http发送请求方式:分为post和get两种方式 importjava.io.IOException; importjava.io.InputStream; import java.util.Map; importjava.util.concurrent.atomic.AtomicInteger; importorg.apache.commons.httpclient.HttpClient; i

javascript两种声明函数的方式的一次深入解析

声明函数的方式 javascript有两种声明函数的方式,一个是函数表达式定义函数,也就是我们说的匿名函数方式,一个是函数语句定义函数,下面看代码: /*方式一*/ var FUNCTION_NAME = function() { /* FUNCTION_BODY */}; /*方式二*/ function FUNCTION_NAME () { /* FUNCTION_BODY */}; 区别一 方式一的声明方式是先声明后使用 方式二的声明方式可以先调用,后声明 /*方式一: *先声明后使用 *

Adnroid 两种下拉刷新 方式的实现 sina刷新 gmail刷新

sina刷新 这种下拉刷新的方式是比较简单的.上个图: 这种刷新方式的思路是这样的: 首先是需要一个HeaderVIew也就是刷新时头部所显示出来的数据.这个view的布局随你,长啥样自己定夺. 其他不是特别重要,重要的是用户触摸事件的捕捉,看到github上的大神的一些方法是比较正规的,我就自己用自己的方法尝试,主要是捕捉到用户的点击事件来计算用户所触摸到的位置然后来更新头部布局的位置. 这个重要的代码贴出来: case MotionEvent.ACTION_MOVE: currentY =

两种停止Thread的方式

当你想要依据某些条件终结thread的时候,有两种最常见的方式. 设定标记 最常见停止thread的方式是设定某些标记来表示该thread应该要停止了.thread可以周期性地查询标记以判别它是否应该退出.如例: package test; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main {     public stati

FMX有两种消息处理的实现方式,一种是用TMessageManager来实现自定义的消息,另外一种象TEdit中的实现,直接声明消息方法

看FMX代码,发现有两种消息处理的实现方式,一种是用TMessageManager来实现自定义的消息,另外一种象TEdit中的实现,直接声明消息方法. 早前,看过文章说TMessageManager的用法,可用到的时候,又找不到,只好自己动手. 我的应用场景是这样: 当前的Frame弹出一个对话框Frame,当操作对话框的时候,想让当前的Frame跟着应响,让用户看到操作的结果,如下图,点大中小字体,后面的题目的字体会跟着变化: 参考fmx的代码,试着用消息机制实现了: 1.声明消息类: typ

ajax有两种提交数据的方式,分别为get和post(转)

ajax有两种提交数据的方式,分别为get和post.post方法可传输大于2K的数据,在Ajax里的应用不同之处在于:"post方法的请求地址与传输的数据是放在两个对象里—-请求地址放在open对象里,传输的数据放在send对象里:并且在传输数据之前定义一个传输文件HTTP头信息(setRequestHeader)" 以下为引用的内容: <SCRIPT LANGUAGE="javascript"> function saveUserInfo(){ //

转:Selenium2.0介绍——WebDriver两种驱动浏览器的方式

如果之前熟悉Selenium RC,理解了Selenium RC是如何工作的,那么,当第一次接触Selenium WebDriver的时候,看到WebDriver居然可以不需要指定远端服务器的IP地址和端口号的,一定会惊讶的. 事实上,WebDriver有两种方式“驱动”浏览器的方式.1. Selenium Server:和Selenium RC一样的,通过指定远端服务器IP地址和端口号,由这个远端服务器来驱动浏览器.2. 直接调用:无须指定任何服务器IP地址和端口号.直接使用本地的浏览器(只要

Java中有两种实现多线程的方式以及两种方式之间的区别

网上流传很广的是一个网上售票系统讲解.转发过来.已经不知道原文到底是出自哪里了. Java中有两种实现多线程的方式.一是直接继承Thread类,二是实现Runnable接口.那么这两种实现多线程的方式在应用上有什么区别呢? 为了回答这个问题,我们可以通过编写一段代码来进行分析.我们用代码来模拟铁路售票系统,实现通过四个售票点发售某日某次列车的100张车票,一个售票点用一个线程表示. 我们首先这样编写这个程序: Java代码    class ThreadTest extends Thread{