XML_day05_dom4j_查询,添加

一、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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值