码迷,mamicode.com
首页 > 其他好文 > 详细

dom4j解析(项目常用)的增删改查

时间:2015-02-04 14:27:32      阅读:180      评论:0      收藏:0      [点我收藏+]

标签:

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <书架>
 3     <>
 4         <书名 name="vvvb">何茂赟自传</书名>
 5         <作者>何茂赟</作者>
 6         <售价>500.00</售价>
 7     <售价>1234元</售价><售价>1234元</售价></>
 8     <>
 9         <书名>何茂赟自传2</书名>
10         <作者>何茂赟</作者>
11         <顾问>习大大和彭妈妈</顾问><售价>100.00元</售价>
12     </>
13 </书架>
  1 package dom4j;
  2 
  3 import java.io.File;
  4 import java.io.FileOutputStream;
  5 import java.io.IOException;
  6 import java.util.List;
  7 
  8 import org.dom4j.Document;
  9 import org.dom4j.DocumentException;
 10 import org.dom4j.DocumentHelper;
 11 import org.dom4j.Element;
 12 import org.dom4j.io.OutputFormat;
 13 import org.dom4j.io.SAXReader;
 14 import org.dom4j.io.XMLWriter;
 15 import org.junit.Test;
 16 
 17 public class demo {
 18 
 19     @Test
 20     // 得到第二本书的书名:<书名>何茂赟自传2</书名>
 21     public void read() throws DocumentException
 22     {
 23         //这两句程序根据手册写出,是固定的,目的是获取读取器
 24         SAXReader reader = new SAXReader();
 25         Document document = reader.read(new File("src/dom4j/shu.xml"));
 26         
 27         Element root=document.getRootElement();//得到xml的根节点(标签)
 28         //注:“.getRootElement”是得到根节点,但是“.elements”是得到子节点(标签)
 29         Element book=(Element) root.elements("书").get(1);//得到第二本书的根节点(标签):<书>
 30         String value=book.element("书名").getText();//得到根节点的子节点<书名>的内容
 31         System.out.println(value);
 32 
 33     }
 34     @Test
 35     // 得到第一本书的书名的属性:<书名 name="vvvb">何茂赟自传</书名>
 36     public void readattr() throws DocumentException
 37     {
 38         //这两句程序根据手册写出,是固定的,目的是获取读取器
 39         SAXReader reader = new SAXReader();
 40         Document document = reader.read(new File("src/dom4j/shu.xml"));
 41         
 42         Element root=document.getRootElement();//得到xml的根节点
 43         Element book=(Element) root.elements("书").get(0);//得到第一本书的根节点(标签):<书>
 44         //注:“.attributeValue”是得到书签的属性,不是“getattribute”,与jaxp方式不同,要损手不同方法的各自api手册
 45         String value=book.element("书名").attributeValue("name");//得到根节点的子节点<书名>的内容
 46         System.out.println(value);
 47 
 48     }
 49     @Test
 50     // 在第一本书里添加<售价>1234元</售价></书>   (不指定位置)
 51     public void add() throws DocumentException, Exception
 52     {
 53         //这两句程序根据手册写出,是固定的,目的是获取读取器
 54         SAXReader reader = new SAXReader();
 55         Document document = reader.read(new File("src/dom4j/shu.xml"));
 56         
 57         Element root=document.getRootElement();//得到xml的根节点
 58         Element book=(Element) root.elements("书").get(0);//得到第一本书的根节点(标签):<书>
 59         book.addElement("售价").setText("1234元");//在<书>的节点下面创建新的子节点(标签)<售价>
 60         
 61         OutputFormat format= OutputFormat.createPrettyPrint();//创建一个格式
 62         format.setEncoding("UTF-8");//格式设定为“UTF-8”
 63        
 64         //以下代码参考手册固定写出,把添加的内容更新到XML文档中,需要强调的是由于存在更新写入时的读码问题,
 65         //需要强调的是由于存在更新写入时的读码问题,此处固定写法:自己设置一个格式如上,下用FileOutputStream输出
 66         XMLWriter writer = new XMLWriter(new FileOutputStream("src/dom4j/shu.xml" ));
 67         writer.write( document );
 68         writer.close();
 69     }
 70     @Test
 71     // 在第二本书的指定位置添加<顾问>习大大</顾问>   
 72     public void add1() throws DocumentException, Exception
 73     {
 74         //这两句程序根据手册写出,是固定的,目的是获取读取器
 75         SAXReader reader = new SAXReader();
 76         Document document = reader.read(new File("src/dom4j/shu.xml"));
 77         
 78         Element root=document.getRootElement();//得到xml的根节点
 79         Element book=(Element) root.elements("书").get(1);//得到第二本书的根节点(标签):<书>
 80         List list=book.elements();//按顺序得到所有的子节点(标签)  (书名,作者,售价)
 81         Element guwen=DocumentHelper.createElement("顾问");//创建出新的标签
 82         guwen.setText("习大大");
 83         list.add(2, guwen);
 84         
 85         
 86         OutputFormat format= OutputFormat.createPrettyPrint();//创建一个格式
 87         format.setEncoding("UTF-8");//格式设定为“UTF-8”
 88        
 89         //以下代码参考手册固定写出,把添加的内容更新到XML文档中,需要强调的是由于存在更新写入时的读码问题,
 90         //需要强调的是由于存在更新写入时的读码问题,此处固定写法:自己设置一个格式如上,下用FileOutputStream输出
 91         XMLWriter writer = new XMLWriter(new FileOutputStream("src/dom4j/shu.xml" ));
 92         writer.write( document );
 93         writer.close();
 94     }
 95     @Test
 96     // 在第二本书的指定位置添加<顾问>习大大</顾问>   
 97     public void delect() throws DocumentException, Exception
 98     {
 99         //这两句程序根据手册写出,是固定的,目的是获取读取器
100         SAXReader reader = new SAXReader();
101         Document document = reader.read(new File("src/dom4j/shu.xml"));
102         
103         Element root=document.getRootElement();//得到xml的根节点
104         Element book=(Element) root.elements("书").get(1);//得到第二本书的根节点(标签):<书>
105         Element guwen=book.element("顾问");//找到顾问标签
106         guwen.getParent().remove(guwen);//删除(先获取父节点)
107         
108         OutputFormat format= OutputFormat.createPrettyPrint();//创建一个格式
109         format.setEncoding("UTF-8");//格式设定为“UTF-8”
110        
111         //以下代码参考手册固定写出,把添加的内容更新到XML文档中,需要强调的是由于存在更新写入时的读码问题,
112         //需要强调的是由于存在更新写入时的读码问题,此处固定写法:自己设置一个格式如上,下用FileOutputStream输出
113         XMLWriter writer = new XMLWriter(new FileOutputStream("src/dom4j/shu.xml" ));
114         writer.write( document );
115         writer.close();
116     }
117     @Test
118     // 更改在指定位置的<顾问>习大大</顾问> 为   <顾问>习大大和彭妈妈</顾问>   
119     public void update() throws DocumentException, Exception
120     {
121         //这两句程序根据手册写出,是固定的,目的是获取读取器
122         SAXReader reader = new SAXReader();
123         Document document = reader.read(new File("src/dom4j/shu.xml"));
124         
125         Element root=document.getRootElement();//得到xml的根节点
126         Element book=(Element) root.elements("书").get(1);//得到第二本书的根节点(标签):<书>
127         Element guwen=book.element("顾问");//找到顾问标签
128         guwen.setText("习大大和彭妈妈");
129         
130         OutputFormat format= OutputFormat.createPrettyPrint();//创建一个格式
131         format.setEncoding("UTF-8");//格式设定为“UTF-8”
132        
133         //以下代码参考手册固定写出,把添加的内容更新到XML文档中,需要强调的是由于存在更新写入时的读码问题,
134         //需要强调的是由于存在更新写入时的读码问题,此处固定写法:自己设置一个格式如上,下用FileOutputStream输出
135         XMLWriter writer = new XMLWriter(new FileOutputStream("src/dom4j/shu.xml" ));
136         writer.write( document );
137         writer.close();
138     }
139 }

 

 

dom4j解析,帮助文档很重要

 


技术分享

dom4j解析(项目常用)的增删改查

标签:

原文地址:http://www.cnblogs.com/jjlovemm/p/4272106.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!