• dom4j解析XML文件


    一.简介

      dom4j是一个Java的XML API,是jdom的升级品,用来读写XML文件的。dom4j是一个十分优秀的JavaXML API,具有性能优异、功能强大和极其易使用的特点,它的性能超过sun公司官方的dom技术,同时它也是一个开放源代码的软件。如今可以看到越来越多的Java软件都在使用dom4j来读写XML,特别值得一提的是连Sun的JAXM也在用dom4j。这已经是必须使用的jar包, Hibernate也用它来读写配置文件。

    二.使用方法

     1.导入必要jar包

      我这里导入的是dom4j-1.6.1.jar(可以百度搜索下载)

     2.使用dom4j写xml文件

      

     1 package Dom4j;
     2 
     3 import java.io.FileOutputStream;
     4 import java.io.FileWriter;
     5 
     6 import org.dom4j.Document;
     7 import org.dom4j.DocumentHelper;
     8 import org.dom4j.Element;
     9 import org.dom4j.io.OutputFormat;
    10 import org.dom4j.io.XMLWriter;
    11 
    12 
    13 public class dom4jTest1 {
    14     public static void main(String args[]) throws Exception
    15     {
    16         //使用helper,创建文档
    17         Document document = DocumentHelper.createDocument();
    18         //创建节点book,并设置为根节点
    19         Element element = DocumentHelper.createElement("book");
    20         document.setRootElement(element);
    21         /***********另外一种创建方式********/
    22         //Element element2 = DocumentHelper.createElement("book");
    23         //Document document2 = DocumentHelper.createDocument(element2);
    24         /****************************/
    25         //添加属性 
    26         element.addAttribute("name", "Journey to the West");
    27         //添加子节点,注意观察和属性的区别。
    28         Element Author = element.addElement("Author");
    29         Author.setText("WuChenEn");
    30         Element Dynasty = element.addElement("dynasty");
    31         Dynasty.setText("Ming");
    32         
    33         //输出到控制台
    34         XMLWriter xmlWriter = new XMLWriter();
    35         xmlWriter.write(document);
    36         
    37         //输出到文件
    38         OutputFormat format = new OutputFormat("    ",true);  //设置缩进为2个空格,并且另起一行为true
    39         XMLWriter xmlWriter2 = new XMLWriter(new FileOutputStream("books.xml"),format);
    40         xmlWriter2.write(document);
    41         
    42         //另一种输出方式
    43         XMLWriter xmlWriter3 = new XMLWriter(new FileWriter("books2.xml"),format);
    44         xmlWriter3.write(document);
    45         xmlWriter3.flush(); //或者close方法。如不添加则文件为空白
    46     }
    47 }

    在运行之后,可以看到项目根目录生成了如下books.xml文件和books2.xml。

      

    books.xml文件结构如下:

    <?xml version="1.0" encoding="UTF-8"?>
    
    <book name="Journey to the West">
        <Author>WuChenEn</Author>
        <dynasty>Ming</dynasty>
    </book>

    3.使用dom4j解析xml文件

      XML文件格式如下:

    <?xml version="1.0" encoding="UTF-8"?> 
    <books> 
       <book id="001"> 
          <title>Harry Potter</title> 
          <author>J K. Rowling</author> 
       </book> 
       <book id="002"> 
          <title>Learning XML</title> 
          <author>LearnAndGet</author> 
       </book> 
    </books>

     解析过程:

     1 package Dom4j;
     2 
     3 import java.io.File;
     4 import java.util.List;
     5 
     6 import org.dom4j.Attribute;
     7 import org.dom4j.Document;
     8 import org.dom4j.DocumentException;
     9 import org.dom4j.Element;
    10 import org.dom4j.io.SAXReader;
    11 
    12 public class dom4jTest2 {
    13     public static void main(String args[]) throws Exception
    14     {  
    15         SAXReader reader = new SAXReader();   //
    16         File file = new File("books2.xml"); 
    17         Document document = reader.read(file);
    18         Element root = document.getRootElement();
    19         
    20         List<Element> childElements = root.elements();
    21         for(Element child : childElements)
    22         {
    23             //在未知属性名的情况下:
    24             List<Attribute> attributeList = child.attributes();
    25             for(Attribute attr : attributeList)
    26             {
    27                 System.out.println(attr.getName()+" : "+attr.getValue());
    28             }
    29             
    30             /*若已知属性名,可使用以下方法
    31              * system.out.println("id"+" : "+child.attributeValue("id"));
    32              */
    33             
    34             //在未知子节点名的情况下:
    35             List<Element> elementList = child.elements();
    36             for(Element element : elementList)
    37             {
    38                 System.out.println(element.getName()+" : "+element.getText());
    39             }
    40             /*若已知子节点属性名,可使用以下方法
    41              * System.out.println("title"+" : "+child.elementText("title"));
    42              * System.out.println("author"+" : "+child.elementText("author"));
    43              */
    44         }
    45     }
    46 }

     可以看到控制台输出结果如下:

    id : 001
    title : Harry Potter
    author : J K. Rowling
    id : 002
    title : Learning XML
    author : LearnAndGet

      使用Iterator迭代器的方式来解析xml:

    import java.io.File;
    import java.util.Iterator;
    import org.dom4j.Attribute;
    import org.dom4j.Document;
    import org.dom4j.Element;
    import org.dom4j.io.SAXReader;
    public class Dom4jTest {
     public static void main(String[] args) throws Exception {
      SAXReader reader = new SAXReader();
      Document document = reader.read(new File("books.xml"));
      Element root = document.getRootElement();
    
      Iterator it = root.elementIterator();
      while (it.hasNext()) {
       Element element = (Element) it.next();
    
       //未知属性名称情况下
       /*Iterator attrIt = element.attributeIterator();
       while (attrIt.hasNext()) {
        Attribute a  = (Attribute) attrIt.next();
        System.out.println(a.getValue());
       }*/
    
       //已知属性名称情况下
       System.out.println("id: " + element.attributeValue("id"));
    
       //未知元素名情况下
       /*Iterator eleIt = element.elementIterator();
       while (eleIt.hasNext()) {
        Element e = (Element) eleIt.next();
        System.out.println(e.getName() + ": " + e.getText());
       }
       System.out.println();*/
    
       //已知元素名情况下
       System.out.println("title: " + element.elementText("title"));
       System.out.println("author: " + element.elementText("author"));
       System.out.println();
      }
     }
    }
    作者:LearnAndGet
    如果觉得阅读本文没有浪费您的时间,请点击推荐支持~
    本文部分内容参考自互联网,如有侵权,请及时联系本人删除
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利.
  • 相关阅读:
    更换电脑后,maven工程无法编译,错误提示:Could not calculate build plan: Plugin org.apache.maven.plugins:maven-resources-plugin:2.6
    Python Selenium下拉列表元素定位
    Python Selenium简单的窗口切换
    python测试报告
    python调用xlrd&xlsxwirter
    selenium-python PageObject设计模式
    python词典的基本操作
    python链接mysql数据库
    python冒泡写法
    python调用各个数据库模块
  • 原文地址:https://www.cnblogs.com/LearnAndGet/p/8520720.html
Copyright © 2020-2023  润新知