zoukankan      html  css  js  c++  java
  • xml之dom4j解析

    * 使用dom4j解析xml 实例在java520里面 TextDom4j
    * dom4j,是一个组织,针对xml解析,提供解析器dom4j
    * dom4j不是javase的一部分,想要使用第一步需要怎么做
    - 导入dom4j提供jar包
    - 常见一个文件夹lib
    - 复制jar包到lib下面
    - 邮件点击jar包.builb path -- add to bulildpath
    - 看到jar包变成奶瓶装 表示导入成功
    * 得到document使用
    * SAXReader reader = new SAXReader();
    Document document = reader.read(url);
    * document父节点是node找不到方法去弄得中去找.

    *document里面的方法getRootElement():获取根节点,返回的是Element
    *Element也是一个接口
    - Element和Node里面的方法
    ** getParent():获取父节点
    ** addElement:获取标签
    ** element(qname);获取p1下面所有叫qname的一个标签
    ** elements(qname)获取p1下面的所有qname标签
    ** elements();获取下面所有标签
    * 使用dom4j查询元素;
    * 查询所有那么元素里面的值
    /*
    创建解析器
    得到document
    得到根节点
    得到 多有p1标签

    得到name
    得到name里面的值
    */
    //得到document
    SAXReader saxReader = new SAXReader();
    Document document = saxReader.read("E:/java520/TextDom4j/src/cn/Dom4j/1.xml");
    //得到root节点
    Element root = document.getRootElement();
    //获取p1
    @SuppressWarnings("unchecked")
    List<Element> list = root.elements("p1");
    //遍历函数
    for (Element element1 : list) {
    Element name = element1.element("name");
    String str = name.getText();
    System.out.println(str);
    }

    * 使用dom4j添加标签,如添加<sex>中国</sex>
    //利用sax得到document
    SAXReader reader = new SAXReader();
    Document doc = reader.read("E:/java520/TextDom4j/src/cn/Dom4j/1.xml");
    //得到根节点
    Element root = doc.getRootElement();
    //得到第一个p1
    Element p = root.element("p1");
    //在p1下边添加元素
    Element xin = p.addElement("sex");
    //在xin下面添加文本
    xin.setText("中国");

    //回写xml
    OutputFormat format = OutputFormat.createPrettyPrint();//漂亮的格式
    XMLWriter xml = new XMLWriter(new FileOutputStream("E:/java520/TextDom4j/src/cn/Dom4j/1.xml"), format);//利用写入流将文件写入到doc中
    xml.write(doc);//再将doc中文件写入源文件中
    xml.close();//关流
    * 在特定的文值添加元素:入在第一个p1下面的age标签之前添加<school>学校</school>
    * 创建解析器
    * 得到document
    * 得到根节点
    * 获取第一个p1
    * 获取p1下面的所有元素
    ** elements()方法,返回list集合
    ** 使用list里面的方法.在特定位置添加元素
    ** 创建元素 documentHelper.createElement("school");
    *** add(int index,E element0
    - 第一个参数是文职下标,从0开始
    - 一二个参数是要添加的元素
    * 回写xml
    public static void tianjia() throws Exception {
    //利用sax获取document文件
    SAXReader reader = new SAXReader();
    Document document = reader.read("E:/java520/TextDom4j/src/cn/Dom4j/1.xml");
    //获取root节点
    Element root = document.getRootElement();
    //得到第一个p1
    List<Element> p1 = root.elements();
    //创建元素
    Element school = DocumentHelper.createElement("school");
    //给school创建文本
    school.setText("学校");
    //利用javase中的list添加方法添加
    p1.add(1, school);
    //回写xml
    OutputFormat format = OutputFormat.createPrettyPrint();
    XMLWriter xmlWriter = new XMLWriter(new FileOutputStream("E:/java520/TextDom4j/src/cn/Dom4j/1.xml"), format);
    xmlWriter.write(document);
    xmlWriter.close();

    * 使用dom4j修改
    * 创建解析器
    * 得到document
    * 得到根节点
    * 获取第一个p1
    * 获取p1下面的要修改的元素
    *.element("**")
    * 修改 使用setText("修改后的内容")方法
    * 回写xml
    * 使用dom4j实现删除节点的操作
    * 创建解析器
    * 得到document
    * 得到根节点
    * 获取第一个p1
    * 获取p1下面的要修改的元素
    *.element("**")
    * 利用父节点删除节点
    * 获取父节点 *.getParent();
    * *.remover(*);
    * 回写xml
    * 使用dom4j获取属性的操作
    * 得到document
    * 得到根节点
    * 得到第一个p1元素
    * 得到p1里面的属性值
    - String value = p1.attributeValue("id1");

    * 使用dom4j支持xpath的操作
    * 可以直接取到某个元素
    1. /AAA/DDD/BBB: 表示一层一层的AAA下面的DDD下面的BBB
    2. //BBB: 表示和这个名称相同,只要是名称为BBB的都得到:
    3. /*: 表示所有的都得到:
    4. BBB[1]:表示BBB第一个元素:
    BBB[last()]:表示BBB最后一个元素
    5. //BBB[@id]: 表示只要BBB上边有id属性的都得到
    6. //BBB[@id="b1"]: 表示元素名称是BBB,在BBB上面所有属性id,并且id的属性值为b1;
    * 使用dom4j支持xpath的具体操作
    ** 默认的情况下,dom4j不支持xpath
    ** 如果想要zaidom4j里面使用xpath
    * 第一步需要引入xpath的jar包;dom4j-1.6.1/lib/jaxen-1.1-beta-6.jar包
    ** 在dom4j里面提供了两个方法啊,用来支持xpath
    * selectNodes("xpath表达式")
    - 获取多个节点
    * selectSingleNode("xpath表达式")
    - 获取单一节点
    /*
    /**
    * 得到document
    * 使用selectNode("xpath")方法得到name
    */
    Document document = Dom4jutils.getDocument(Dom4jutils.PATH);
    List<Node> list = document.selectNodes("//name");
    for (Node node : list) {
    String str = node.getText();
    System.out.println(str);
    }
    */
    * 使用xpath实现:获取第一个p1下面的name值
    * //p1[@id1='aaa']/name
    * 使用到selectSingleNode("//p1[@id1='aaa']/name")
    **方法步骤
    /**
    * 得到document
    * 利用xpath的到p1下面的值
    * */
    Document document = Dom4jutils.getDocument(Dom4jutils.PATH);
    Node name = document.selectSingleNode("//p1[@id='aaa']/name");
    String str = name.getText();
    System.out.println(str);
    * 实现简单的学生管理系统;
    * 使用xml当做数据,存储学生信息:
    * 创建xml文件,做学生信息:

  • 相关阅读:
    【心情】12月22日
    【心情】12月12日
    【心情】12月8日
    【转载】信息学竞赛知识地图
    SharePoint 2013 工作流之年假审批Designer配置篇
    SharePoint 2013 状态机工作流之扩展自定义状态
    SharePoint 2013 状态机工作流之UpdateItemActivity
    SharePoint 2013 状态机工作流之日常报销示例
    SharePoint 2013 对二进制大型对象(BLOB)进行爬网
    SharePoint 2013 图文开发系列之应用程序页
  • 原文地址:https://www.cnblogs.com/czb2580/p/5878874.html
Copyright © 2011-2022 走看看