dom4j解析xml练习源码
来源:互联网 发布:淘宝透明下拉栏 编辑:程序博客网 时间:2024/05/21 15:03
- package dmo4jTest;
- import java.io.File;
- import java.io.FileNotFoundException;
- import java.io.FileOutputStream;
- import java.io.OutputStream;
- import java.io.UnsupportedEncodingException;
- import java.util.List;
- import org.dom4j.Document;
- import org.dom4j.DocumentException;
- import org.dom4j.DocumentHelper;
- import org.dom4j.Element;
- import org.dom4j.io.OutputFormat;
- import org.dom4j.io.SAXReader;
- import org.dom4j.io.XMLWriter;
- import org.junit.Test;
- public class DemoDom4j {
- // 利用dom4j解析xml 进行的操作
- @Test
- // 1、得到某个具体的节点内容:得到第二本书的售价
- public void method1() throws Exception {
- // 得到解析器
- SAXReader sa = new SAXReader();
- // 得到dom
- Document d = sa.read("book.xml");
- // 得到根元素
- Element e = d.getRootElement();
- // 得到书的集合 只得到儿子
- List<Element> li = e.elements();
- // 得到书中的标签售价
- Element sj = li.get(1).element("售价");
- // 得到值
- System.out.println(sj.getTextTrim());
- }
- @Test
- // 打印有节点内容
- public void method2() throws Exception {
- SAXReader sr = new SAXReader();
- Document d = sr.read("book.xml");
- // 递归调用
- print(d.getRootElement());
- }
- private void print(Element root) {
- System.out.println(root.getText());
- List<Element> li = root.elements();
- for (Element element : li) {
- print(element);
- }
- }
- @Test
- // 3、修改某个元素节点的主体内容:
- public void method4() throws Exception {
- // 第一本书的售价修改为200
- SAXReader sr = new SAXReader();
- Document d = sr.read("book.xml");
- // 得到根元素
- Element e = d.getRootElement();
- List<Element> li = e.elements("书");
- // 得到书中的售价修改
- li.get(0).element("售价").setText("200RMB");
- // 写入XML
- OutputFormat format = OutputFormat.createPrettyPrint();
- XMLWriter xw = new XMLWriter(new FileOutputStream("book.xml"), format);
- // 每次还要写回Document
- xw.write(d);
- }
- //在第二本书中添加节点,vip价格20;
- @Test
- public void method5() throws Exception {
- SAXReader sr = new SAXReader();
- Document d = sr.read("book.xml");
- //DocumentHelper 才有创建元素节点的方法
- Element e= DocumentHelper.createElement("vip").addText("120");
- //把这个元素添加到书中
- List< Element> li = d.getRootElement().elements("书");
- //在第二本,的第二个位置插入我新的元素
- li.get(1).elements().add(1, e);
- OutputFormat format = OutputFormat.createPrettyPrint();
- XMLWriter xw = new XMLWriter(new FileOutputStream("book.xml"), format);
- // 每次还要写回Document
- xw.write(d);
- }
- @Test
- public void last() throws Exception {
- //删除第一本书的售价
- SAXReader sr = new SAXReader();
- Document d = sr.read("book.xml");
- //得到书这个节点删除儿子
- Element e = d.getRootElement();
- List <Element> li = e.elements("书");
- Element sj= li.get(0).element("作者");
- sj.getParent().remove(sj);
- OutputFormat format = OutputFormat.createPrettyPrint();
- XMLWriter xw = new XMLWriter(new FileOutputStream("book.xml"), format);
- // 每次还要写回Document
- xw.write(d);
- }
- @Test
- // 添加一本书
- public void method() throws Exception {
- // 得到解析器
- SAXReader sa = new SAXReader();
- // 得到dom
- Document d = sa.read("book.xml");
- //
- Document doc = DocumentHelper.createDocument();
- // 添加书节点
- Element book = doc.addElement("书");
- // 书节点添加子节点
- Element bn1 = book.addElement("书名").addText("平凡的世界");
- Element bn2 = book.addElement("作者").addText("路遥");
- Element bn3 = book.addElement("售价").addText("998");
- // 设置属性
- bn1.setAttributeValue("name", "bookname");
- // 把书节点添加书架上。
- d.getRootElement().add(book);
- // 写入XML
- // 根据书名格式写入到XML 2种 一种有空格 ,一种没有
- OutputFormat of = OutputFormat.createCompactFormat();
- try {
- XMLWriter xw = new XMLWriter(new FileOutputStream("book.xml"), of);
- xw.write(d);
- } catch (Exception e) {
- throw new RuntimeException();
- }
- }
- }
阅读全文
0 0
- dom4j解析xml练习源码
- xml练习案例(使用Dom4j解析)
- JavaSE练习 XML解析-Dom4j使用
- 用DOM4J解析XML
- 使用 dom4j 解析 XML
- 使用 dom4j 解析 XML
- 解析xml之--DOM4J
- dom4j解析XML
- 使用 dom4j 解析 XML
- xml文件解析-DOM4J
- 使用 dom4j 解析 XML
- 使用 dom4j 解析 XML
- dom4j解析xml方法
- 使用 dom4j 解析 XML
- 使用 dom4j 解析 XML
- 使用 dom4j 解析 XML
- 使用 dom4j 解析 XML
- 使用 dom4j 解析 XML
- 对象去重,根据指定状态对比不同对象
- 两种下载YouTube视频的方法
- SpringBoot建工程jar工程和war工程的区别
- restful风格,restcontroller与controller
- Visual Studio2010"当前不会命中代码,源代码与原始版本不同"问题的解决方法
- dom4j解析xml练习源码
- 推荐一款前端轻量级的toolTip插件-Tippy.js
- 使用 Virtual Box 加载一个Unbuntu
- jquery.fullPage.js全屏滚动插件的使用方法
- spring aop同时代理service层和controller层的问题
- delphi messagebox中string转ansichar 问题
- Android蓝牙开发【三】蓝牙Hid开发
- python 用turtle库绘制时钟
- MySQL中myisam和innodb的主键索引有什么区别?