首页 > 代码库 > (转)Dom4J解析

(转)Dom4J解析

xml文档:

<?xml version="1.0" encoding="UTF-8"?><书架>   <书 出版社="清华">     <书名>Java就业培训教程</书名>      <出版社></出版社>    <出版社>清华</出版社>      <售价>50.00元</售价>      <内部价>40.99元</内部价>      <作者>刘清华</作者>   </>    <>     <书名>JavaScript网</书名>      <作者>张孝祥</作者>      <售价>28.00元</售价>   </> </书架>  

 代码演示:

package test.java;/**  * @author lxw  * @date 2016年9月6日 下午10:01:55  * @describe  */import java.io.FileOutputStream;import java.util.List;import org.dom4j.Document;import org.dom4j.DocumentHelper;import org.dom4j.Element;import org.dom4j.Node;import org.dom4j.io.OutputFormat;import org.dom4j.io.SAXReader;import org.dom4j.io.XMLWriter; public class Dom4JParser {   //测试   public static void main(String[] args) throws Exception {      test08();   }   //1、获得某个节点的具体内容 >> 获取第2本书的 【书名】   public static void test01() throws Exception{      //1.获取解析器      SAXReader reader = new SAXReader();      //2.加载XML文档      Document document = reader.read("src/book.xml");      //3.获取根元素      Element root = document.getRootElement();      //4.找第二本书的元素      Element book = (Element)root.elements("书").get(1);      Element name = book.element("书名");      // 测试+打印      System.out.println("第2本书的书名是:"+name.getText());   }   //2、遍历所有的元素节点,打印元素的名称   public static void test02() throws Exception{      SAXReader reader = new SAXReader();      Document document = reader.read("src/book.xml");      Element root = document.getRootElement();      treeWalk(root);             }   //2.1  递归遍历   public static void treeWalk(Element element){      //打印元素的名字      System.out.println(element.getName());      //获取该元素,孩子Node的个数      int size = element.nodeCount();      //循环遍历      for (int i = 0; i < size; i++) {         //取出第i个 孩子节点         Node node = element.node(i);         if (node.getNodeType() == Node.ELEMENT_NODE) {            treeWalk((Element)node);         }      }   }   //3.修改xml的主体内容 》》修改第一本书的【作者】   public static void test03() throws Exception{      SAXReader reader = new SAXReader();      Document document = reader.read("src/book.xml");      Element root = document.getRootElement();      //1.找到作者      Element element = (Element)root.elements("书").get(0);      //2.修改 主题内容      element.element("作者").setText("刘清华");      //3.更新XML文档      OutputFormat format = OutputFormat.createPrettyPrint();      format.setEncoding("UTF-8");//设置格式化编码      //默认编码就是 【UTF-8】      XMLWriter writer = new XMLWriter(new FileOutputStream("src/book.xml"),format);      writer.write(document);      writer.close();   }   //4.增加一个节点 》》第1本书 增加 【内部价】   public static void test04() throws Exception{      SAXReader reader = new SAXReader();      Document document = reader.read("src/book.xml");      Element root = document.getRootElement();      //1.找到第一本书      Element book1 = root.element("书"); //默认 是 第1本  ,相当于  elements(“书”).get(0);      //2.新建一个 节点      Element price = DocumentHelper.createElement("作者");      price.setText("sts");      //3.添加      book1.add(price);      //4.更新XML文档      //格式化器,使XML更规范      OutputFormat format = OutputFormat.createPrettyPrint();      XMLWriter writer = new XMLWriter(new FileOutputStream("src/book.xml"),format);      writer.write(document);      writer.close();   }   //5.在指定位置添加一个元素节点    》》 第一本书,作者前,增加 【出版社】   public static void test05() throws Exception{      SAXReader reader = new SAXReader();      Document document = reader.read("src/book.xml");      Element root = document.getRootElement();      //1.找到第一本书的集合列表      List book1 = root.element("书").elements(); //默认 是 第1本  ,相当于  elements(“书”).get(0);      //2.新建一个 节点      Element chuban = DocumentHelper.createElement("出版社");      chuban.setText("华");      //3.在list中指定位置,添加      book1.add(1,chuban);      //4.更新XML文档      //格式化器,使XML更规范      OutputFormat format = OutputFormat.createPrettyPrint();      XMLWriter writer = new XMLWriter(new FileOutputStream("src/book.xml"),format);      writer.write(document);      writer.close();   }   //6.删除指定元素节点   private static void test06()throws Exception{      SAXReader reader = new SAXReader();      Document document = reader.read("src/book.xml");      Element root = document.getRootElement();      //1.找到第一本书的作者      Element book1 = root.element("书");      Element author = book1.element("作者");      //2.由父亲删儿子      book1.remove(author);      //3.更新XML文档      //格式化器,使XML更规范      OutputFormat format = OutputFormat.createPrettyPrint();      XMLWriter writer = new XMLWriter(new FileOutputStream("src/book.xml"),format);      writer.write(document);      writer.close();   }   //7.对元素属性的操作   private static void test07()throws Exception{      SAXReader reader = new SAXReader();      Document document = reader.read("src/book.xml");      Element root = document.getRootElement();      //1.找到第一本书      Element book1 = root.element("书");      //2.显示属性的内容      System.out.println(book1.attributeValue("出版社"));   }   //8.将xml转换成String   private static void test08() throws Exception{      SAXReader reader = new SAXReader();      Document document = reader.read("src/book.xml");      //XML转换成字符串      String text = document.asXML();      System.out.println(text);   }   //9.将String 转换成为 xml   private static void test09() throws Exception{      String text = "<person><name>刘清华</name></person>";      Document document = DocumentHelper.parseText(text);           //格式化器,使XML更规范      OutputFormat format = OutputFormat.createPrettyPrint();      XMLWriter writer = new XMLWriter(new FileOutputStream("D:/test.xml"),format);      writer.write(document);      writer.close();   }} 

 

(转)Dom4J解析