XML_Dom4j的使用

来源:互联网 发布:怎么查看淘宝店家电话 编辑:程序博客网 时间:2024/06/05 13:34

DOM4J的背景
 Dom4j是一个简单、灵活的开放源代码的库。Dom4j是由早期开发JDOM的人分离出来后而独立开发的。Dom4J使用接口和抽象基类,虽然Dom4J的API相对要复杂一些,但是它提供了比JDOM更好的灵活性。

1. Dom4J的jar包介绍
 Dom4J属于第三方插件,我们在下载完之后,将其解压如下:
DOM4J的解压包

名称 作用 docs 存放的是dom4j的文档 lib 存放的是跟dom4j相关的jar包 src 存放源码 xml 存放的是一些配置文件


2. 导入JAR包
 因为dom4J是属于第三方插件,所以要使用dom4J,我们必须将其jar包导入到lib目录下。找到dom4j-1.6.1.jar(1.6.1是版本号),放进Wroot – WEB INF – lib下。

3. DOM4J查询操作
 DOM4J查找节点的文本内容,需要一层一层去查找内容,通过根节点去查找子节点,再查找子节点的子节点。

//创建解析器:new SAXReader()SAXReader reader = new SAXReader();//解析XML,返回Document对象:read(File file);Document document = reader.read("src/book.xml");//获取根节点:getRootElement();Element root = document.getRootElement();//获取根节点的子节点:root.elements(标签名)List<Elemtnt> first = root.elements("XXX");//XXX是节点的名字(String类型)//返回List集合,可以遍历集合或者getIndex()获取Element对象//获取文本 getText()

4. DOM4J在末尾添加子节点
 添加子节点是在查询的基础上进行的。
先看下xml中没有改变的内容是这样的:

<?xml version="1.0" encoding="UTF-8"?><书架>   <>     <书名>javaweb开发大全</书名>      <作者>班长</作者>      <售价>99.8元</售价>      <简介>这是不错啊</简介>   </>    <>     <书名>葵花宝典</书名>      <作者>岳不群</作者>      <售价>99.8两</售价>      <简介>欲练此功...</简介>   </> </书架>

下面是在末尾添加子节点的代码:

        //获取解析器        SAXReader reader = new SAXReader();        //解析XML,返回Document对象        Document document = reader.read("src/book2.xml");        //获取根节点        Element root = document.getRootElement();        //获取第二本书        Element book2 = (Element) root.elements("书").get(1);        //直接在第二本书下添加子节点,设置文本内容        book2.addElement("猫").setText("这TM是猫?");        //回写        FileOutputStream fos = new FileOutputStream("src/book2.xml");//创建流        XMLWriter writer = new XMLWriter(fos);  //回写类        writer.write(document); //回写文档对象        writer.close();     //关闭流

执行后的结果为:

<?xml version="1.0" encoding="UTF-8"?><书架>   <>     <书名>javaweb开发大全</书名>      <作者>班长</作者>      <售价>99.8元</售价>      <简介>这是不错啊</简介>   </>    <>     <书名>葵花宝典</书名>      <作者>岳不群</作者>      <售价>99.8两</售价>      <简介>欲练此功...</简介>   <>这TM是猫?</></> </书架>

但是格式有点乱,我们可以通过设置来搞定:

//设置格式OutputFormat Peopleformat = OutputFormat.createPrettyPrint();//适用于人看OutputFormat PCformat = OutputFormat.createPrettyPrint();//适用于电脑//设置编码集,也可以不设置,默认编码集为"UTF-8"Peopleformat.setEncoding("GBK");//然后在原本回写类的后面添加一个参数format,就是上面的设置的格式XMLWriter writer = new XMLWriter(fos,format);   //回写类

5. 在指定位置添加子节点

        //获取解析对对象        SAXReader reader = new SAXReader();        //解析XML        Document document = reader.read("src/book2.xml");        //获取根节点        Element root = document.getRootElement();        //获取第二本书节点        Element book = (Element) root.elements("书").get(1);        //获取第二本书下的所有子节点,返回List集合        List<Element> list = book.elements();        //创建元素对象,DocumentHelper.createrElement("狗");        Element dog = DocumentHelper.createElement("狗");        //给这个节点设置文本内容        dog.setText("马萨卡!!是狗???");        //在指定的位置上进行添加,前面一个参数是索引        list.add(1,dog);        //回写        回写的具体代码可以参照上面 在节点末尾添加子节点代码中的回写。

6. 移除和修改子节点

和上面代码一样,获取到 第二本书的节点        //获取书的节点        //获取猫节点        Element cat = book.element("猫");        //修改节点内容        cat.setText("猫和老鼠");        //移除猫的节点        book.remove(cat);        //回写和上面一样,进行回写
原创粉丝点击