zoukankan      html  css  js  c++  java
  • dom4j使用

    dom4j是一个dom4j.org出品的开源的库,常用于解析xml,dom4j最大的特点是简单易用。这里介绍一下dom4j使用:

    1.获取document

    首先创建SAXReader对象reader,然后使用reader读取xml对应Url或者对应InputStream流。

    URL url = XmlUtil.class.getClassLoader().getResource(filePath);
    SAXReader reader = new SAXReader();
    Document document = reader.read(url);

    2.使用Iterator遍历document的元素和属性

    首先获取root根元素,然后获取根节点的Iterator,使用Iterator遍历元素子元素

    Element root = document.getRootElement();
    /* 遍历所有子元素 */
    for(Iterator i = root.elementIterator();i.hasNext();){
        Element element = (Element) i.next();
    }
    /* 遍历所有指定名称子元素 */
    for (Iterator i = root.elementIterator("div"); i.hasNext();) {
        Element dir = (Element) i.next();
    }
    /* 遍历元素下所有属性 */
    for (Iterator i = root.attributeIterator();i.hasNext();){
        Attribute attr = (Attribute) i.next();
    }

     3.使用xpath获取元素和属性

    List<Node> list = document.selectNodes("/root/dir"); //获取元素列表
    Node node = document.selectSingleNode("/root/dir[@id='node']"); //获取单个元素
    String attr= node.valueOf("@style"); //获取元素属性

      

    4.fast looping

    遍历很大的xml文件时,使用 Iterator会创建大量的Iterator Object,消耗内存,这时可以考虑使用递归方式遍历xml文件。

    public void treeWalk(Element element){
        for (int i=0, size=element.nodeCount(); i < size; i++){
            Node nodetemp = element.node(i);
            if (nodetemp instanceof Element){
                treeWalk((Element) nodetemp);
            }else {
                //do something
            }
        }
    }
    public void treeWalk(Document document){
        Element root = document.rootElement();
        treeWalk(root);
    }

    5.创建document

    使用DocumentHelper创建新的document,在document下添加root元素,然后可以在root元素下创建各种节点。

    Document newDocument = DocumentHelper.createDocument();
    Element newRoot = newDocument.addElement("root");
    Element author1 = newRoot.addElement( "author" )
            .addAttribute( "name", "James" )
            .addAttribute( "location", "UK" )
            .addText( "James Strachan" );
    
    Element author2 = newRoot.addElement( "author" )
            .addAttribute( "name", "Bob" )
            .addAttribute( "location", "US" )
            .addText( "Bob McWhirter" );

    6.将document写入文件

    使用XMLWriter将document写入文件,实际使用需要在finally中关闭writer。

    XMLWriter writer = new XMLWriter(new FileWriter(filepath));
    writer.write(document);
    writer.close();

    7.格式化输出document

    创建带有OutputFormat的XMLWriter可以实现对document的格式化输出。

    OutputFormat format = null;

    format = OutputFormat.createPrettyPrint();//排版 XMLWriter writer = new XMLWriter(System.out, format); writer.write(document);
    format
    = OutputFormat.createCompactFormat();//紧凑 writer = new XMLWriter(System.out, format); writer.write(document);

    8.document转成String

    String xmlText = document.asXML();

    代码摘自官方文档                                              

    参考文献:https://github.com/dom4j/dom4j/wiki

    
    
  • 相关阅读:
    Mysql常用sql语句(6)- limit 限制查询结果的条数
    Mysql常用sql语句(5)- as 设置别名
    Mysql常用sql语句(4)- distinct 去重数据
    Mysql常用sql语句(3)- select 查询语句基础使用
    Jenkins(8)- CentOS 7.x 通过yum安装jenkins
    Jmeter系列(11)- 并发线程组Concurrency Thread Group详解
    Jmeter系列(10)- 阶梯加压线程组Stepping Thread Group详解
    Jmeter系列(9)- jmeter插件入门篇
    Jmeter系列(8)- test plam测试计划参数详解
    Jmeter系列(6)- test plan测试计划详细讲解
  • 原文地址:https://www.cnblogs.com/xiejinjie/p/9596896.html
Copyright © 2011-2022 走看看