day05_dom4j_查询,添加

来源:互联网 发布:win10单片机驱动程序 编辑:程序博客网 时间:2024/05/17 22:10

一、dom4j简介
dom4j是一个组织,针对xml解析,提供解析器,dom4j
不是Javase的一部分
使用步骤:

  1. 导入dom4j提供jar包
  2. 创建文件夹lib
  3. 复制jar包到lib下
  4. 右击jar包,buildpath—>add to buildpath
  5. 看到jar包,变成奶瓶的样子,即导入成功

二、得到document

SAXReader reader = new SAXReader();Document document=reader.read(url);
  1. document父节点是node,方法在document里面找不到,可以去node里面找
  2. document里面的方法,getRootElement()获取根节点,返回的是element
  3. element是一个接口,父接口是node

element和node里面的方法
getParent();获取父节点
addElement();添加标签

三、使用dom4j查询xml
查询所有name里面的值

1.创建解析器
2.得到document
3.得到根节点 getRootElement();

4.得到所有的p1
element(qname);
elements(qname);
element();

5.得到name
6.得到name的值

查询第一个name元素的值

          /*           * 1、创建解析器           * 2、得到document           * 3、得到根节点           *           * 4、得到第一个p1元素                  **element("p1")方法 返回Element           * 5、得到p1下面的name元素                 **element("name")方法 返回Element           * 6、得到name元素里面的值                 **getText方法           * */

获取第二个name元素的值

          /*           * 1、创建解析器           * 2、得到document           * 3、得到根节点           *           *  4、得到所有的p1                 **返回 list集合           *  5、遍历得到第二个p1                 **使用list下标得到 get方法,集合的下标从 0 开始,想要得到第二个值,下标写 1           *  6、得到第二个p1下面的name                 **element("name")方法 返回Element           *  7、得到name的值                 **getText方法           * */

*在第一个p1标签末尾添加一个元素 sex>

          /*           * 1、创建解析器           * 2、得到document           * 3、得到根节点           *           * 4、获取到第一个p1                 *使用element方法           * 5、在p1下面添加元素                 *在p1上面直接使用 addElement("标签名称")方法 返回一个Element           * 6、在添加完成之后的元素下面添加文本           *    在sex上直接使用 setText("文本内容")方法           * 7、回写xml                 *格式化OutputFormat,使用createPrettyPrint方法,表示一个漂亮的格式                 *使用类XMLWriter 直接new 这个类,传递两个参数                        ***第一个参数是xml文件路径 new FileOutputStream("路径")                        ***第二个参数是格式化类的值           * */

使用dom4j实现在特定位置添加元素

   *在第一个p1下面的age标签之前添加 <school>ecit.edu.cn</schlool>   *步骤       /*           * 1、创建解析器           * 2、得到document           * 3、得到根节点           * 4、获取到第一个p1           *           * 5、获取p1下面的所有的元素           *          **elements()方法 返回 list集合           *     ** 使用list里面的方法,在特定位置添加元素           *           **首先创建元素 在元素下面创建文本                               -使用DocumentHelper类方法createElement创建标签                               -把文本添加到标签下面 使用 setText("文本内容")方法           *             *** list集合里面的 add(int index, E element)           *                    - 第一个参数是位置 下标,从0开始           *                    - 第二个参数是要添加的元素           * 6、回写xml           * */   **可以对得到document的操作和 回写xml的操作,封装成方法   **也可以把传递的文件路径,封装成一个常量(一般大写)   ***好处:可以提高开发速度,可以提交代码可维护性          -比如想要修改文件路径(名称),这个时候只需要修改常量的值就可以了,其他代码不需要做任何改变。

获取第一个p1里面属性值id1

//获取第一个p1里面属性值id1(attributeValue();)
public static void getValues() throws Exception{
Document document = Dom4jUtils.getDocument(Dom4jUtils.PATH);
Element root = document.getRootElement();
Element p1 = root.element(“p1”);

    String value1 = p1.attributeValue("id1");    System.out.println(value1);     }

使用dom4j支持xpath的操作

   *可以直接获取到某个元素   *第一种形式          /AAA/DDD/BBB: 表示一层一层的,AAA下面 DDD下面的BBB   *第二种形式          //BBB: 表示和这个名称相同,表示只要名称是BBB,都得到   *第三种形式          /*:所有元素   *第四种形式          ** BBB[1]: 表示第一个BBB元素          ×× BBB[last()]:表示最后一个BBB元素   *第五种形式          **//BBB[@id]: 表示只要BBB元素上面有id属性,都得到   *第六种形式          **//BBB[@id='b1'] 表示元素名称是BBB,在BBB上面有id属性,并且id的属性值是b1