(转)Dom4J解析
Posted CS408
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(转)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解析的主要内容,如果未能解决你的问题,请参考以下文章