dom4j解析xml文档

1,首先要导入dom4j.jar包.

2,要注意编码的问题,


book.xml:

[html]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2.   
  3. <书架>   
  4.   <>   
  5.     <书名 name="xx">Java就业培训教程</书名>    
  6.     <作者>张孝祥</作者>    
  7.     <售价>38.00元</售价>    
  8.     <售价>28.00元</售价>    
  9.     <售价>209元</售价>   
  10.   </>    
  11.   <>   
  12.     <书名>JavaScript网页开发</书名>    
  13.     <作者>李货名</作者>    
  14.     <售价>109.00元</售价>    
  15.     <售价>209元</售价>    
  16.     <售价>209元</售价>    
  17.     <售价>209元</售价>    
  18.     <售价>209元</售价>    
  19.     <售价>209元</售价>    
  20.     <售价>209元</售价>   
  21.   </>    
  22.   <>   
  23.     <书名>JavaWeb开发</书名>    
  24.     <作者>张孝祥</作者>    
  25.     <售价>28.00元</售价>   
  26.   </>   
  27. </书架>  

Demo1.java:

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. package cn.hmm.day4;  
  2.   
  3. import java.io.File;  
  4. import java.io.FileNotFoundException;  
  5. import java.io.FileOutputStream;  
  6. import java.io.FileWriter;  
  7. import java.io.IOException;  
  8. import java.io.OutputStreamWriter;  
  9. import java.io.UnsupportedEncodingException;  
  10. import java.util.List;  
  11.   
  12. import org.dom4j.Document;  
  13. import org.dom4j.DocumentException;  
  14. import org.dom4j.DocumentHelper;  
  15. import org.dom4j.Element;  
  16. import org.dom4j.io.OutputFormat;  
  17. import org.dom4j.io.SAXReader;  
  18. import org.dom4j.io.XMLWriter;  
  19. import org.junit.Test;  
  20.   
  21. public class Demo1 {  
  22.     //读取xml文档中第二本书的书名   
  23.     @Test  
  24.     public void read() throws DocumentException{  
  25.         SAXReader reader = new SAXReader();  
  26.         Document document = reader.read(new File("src/book.xml"));  
  27.         Element root = document.getRootElement();  
  28.         Element book = (Element)root.elements().get(0);  
  29.         //String value = book.element("书名").getText();  
  30.         //获得属性值  
  31.         String value = book.element("书名").attribute("name").getValue();  
  32.         System.out.println(value);  
  33.     }  
  34.     //在第一本书上添加一个新的售价  
  35.     @Test  
  36.     public void add() throws DocumentException, IOException{  
  37.         SAXReader reader = new SAXReader();  
  38.         Document document = reader.read(new File("src/book.xml"));  
  39.           
  40.         Element root = document.getRootElement();  
  41.         Element book = (Element)root.elements().get(1);  
  42.         book.addElement("售价").setText("209元");  
  43.         //把数据写入到xml中去  
  44.         //解决乱码问题  乱码:XMLWriter writer = new XMLWriter(new FileWriter("src/book.xml"));  
  45.         //XMLWriter writer = new XMLWriter(new OutputStreamWriter(new FileOutputStream("src/book.xml"),"UTF-8"));  
  46.           
  47.         //格式化输出  
  48.         /*OutputFormat format = OutputFormat.createPrettyPrint(); 
  49.         format.setEncoding("gb2312"); 
  50.         XMLWriter writer = new XMLWriter(new OutputStreamWriter(new FileOutputStream("src/book.xml"),"gb2312"),format);*/  
  51.           
  52.         //第二种格式化输出  
  53.         OutputFormat format = OutputFormat.createPrettyPrint();  
  54.         format.setEncoding("UTF-8");  
  55.         XMLWriter writer = new XMLWriter(new FileOutputStream("src/book.xml"),format);  
  56.         writer.write(document);  
  57.         writer.close();  
  58.     }  
  59.       
  60.     //在指定位置添加一个新的售价  
  61.     @Test  
  62.     public void add1() throws DocumentException, IOException{  
  63.         SAXReader reader = new SAXReader();  
  64.         Document document = reader.read(new File("src/book.xml"));  
  65.         Element book = document.getRootElement().element("书");  
  66.         List list = book.elements();  
  67.           
  68.         //创建一个售价标签  
  69.         Element price = DocumentHelper.createElement("售价");  
  70.         price.setText("309元");  
  71.           
  72.         list.add(2, price);  
  73.           
  74.         OutputFormat format = OutputFormat.createPrettyPrint();  
  75.         format.setEncoding("UTF-8");  
  76.         XMLWriter writer = new XMLWriter(new FileOutputStream("src/book.xml"),format);  
  77.         writer.write(document);  
  78.         writer.close();  
  79.     }  
  80.       
  81.     //删除上门添加的节点  
  82.     @Test  
  83.     public void delete() throws DocumentException, IOException{  
  84.         SAXReader reader = new SAXReader();  
  85.         Document document = reader.read(new File("src/book.xml"));  
  86.         Element price = document.getRootElement().element("书").element("售价");  
  87.         price.getParent().remove(price);  
  88.         OutputFormat format = OutputFormat.createPrettyPrint();  
  89.         format.setEncoding("UTF-8");  
  90.         XMLWriter writer = new XMLWriter(new FileOutputStream("src/book.xml"),format);  
  91.         writer.write(document);  
  92.         writer.close();  
  93.     }  
  94.       
  95.     //更新第二本书的作者名字  
  96.     @Test  
  97.     public void update() throws DocumentException, IOException{  
  98.         SAXReader reader = new SAXReader();  
  99.         Document document = reader.read(new File("src/book.xml"));  
  100.           
  101.         Element book = (Element) document.getRootElement().elements().get(1);  
  102.         book.element("作者").setText("李货名");  
  103.         OutputFormat format = OutputFormat.createPrettyPrint();  
  104.         format.setEncoding("UTF-8");  
  105.         XMLWriter writer = new XMLWriter(new FileOutputStream("src/book.xml"),format);  
  106.         writer.write(document);  
  107.         writer.close();  
  108.     }  
  109. }  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值