• dom4j的解析实例


    book.xml数据如下:
    [html] view plain copy
     
    1. <books>  
    2.     <book>  
    3.         <author>Thomas</author>  
    4.         <title>Java从入门到放弃</title>  
    5.         <publisher>UCCU</publisher>  
    6.     </book>  
    7.     <book>  
    8.         <author>小白</author>  
    9.         <title>MySQL从删库到跑路</title>  
    10.         <publisher>Go Die</publisher>  
    11.     </book>  
    12.     <book>  
    13.         <author>PHPer</author>  
    14.         <title>Best PHP</title>  
    15.         <publisher>PHPchurch</publisher>  
    16.     </book>  
    17. </books>  
    我把book.xml放在D盘的根目录下,这样读取时能比较方便些……
    下面是代码:
    [java] view plain copy
     
    1. package com;  
    2.   
    3. import org.dom4j.Document;  
    4. import org.dom4j.Element;  
    5. import org.dom4j.io.SAXReader;  
    6.   
    7. import java.io.ByteArrayInputStream;  
    8. import java.io.File;  
    9. import java.util.List;  
    10.   
    11. public class SAXReaderXML {  
    12.     public static void main(String[] args) throws Exception {  
    13.         SAXReader reader = new SAXReader();  
    14.         File xmlfile = new File("D:/books.xml");  
    15.         String xml = "<books><book><author>Thomas</author><title>Java从入门到放弃</title><publisher>UCCU</publisher>" +  
    16.                 "</book><book><author>小白</author><title>MySQL从删库到跑路</title><publisher>GoDie</publisher></book>" +  
    17.                 "<book><author>PHPer</author><title>BestPHP</title><publisher>PHPchurch</publisher></book></books>";  
    18.         Document fileDocument = reader.read(xmlfile);//从xml文件获取数据  
    19.         Document document = reader.read(new ByteArrayInputStream(xml.getBytes("utf-8")));//读取xml字符串,注意这里要转成输入流  
    20.         Element root = document.getRootElement();//获取根元素  
    21.         List<Element> childElements = root.elements();//获取当前元素下的全部子元素  
    22.   
    23.         for (Element child : childElements) {//循环输出全部book的相关信息  
    24.             List<Element> books = child.elements();  
    25.             for (Element book : books) {  
    26.                 String name = book.getName();//获取当前元素名  
    27.                 String text = book.getText();//获取当前元素值  
    28.                 System.out.println(name + ":" + text);  
    29.             }  
    30.         }  
    31.         //获取第二条书籍的信息  
    32.         Element book2 = childElements.get(1);  
    33.         Element author = book2.element("author");//根据元素名获取子元素  
    34.         Element title = book2.element("title");  
    35.         Element publisher = book2.element("publisher");  
    36.         System.out.println("作者:" + author.getText());//获取元素值  
    37.         System.out.println("书名:" + title.getText());  
    38.         System.out.println("出版社:"+publisher.getText());  
    39.     }  
    40. }  
    代码解析:
    1、读取xml数据
    SAXReader可以通过多种方式读取xml数据,并返回Document格式的对象。通过查看源码,可以看出read()方法接收File,InputStream和URL等格式的参数来读取相应的xml数据。在代码里我演示了读取xml文档和xml格式的字符串两种方式。当然,字符串要根据相应的编码转成输入流才能被SAXReader读取。
    2、解析xml数据
    读取到Document对象后,我们使用getRootElement()方法获取根元素,返回的是一个Element对象。在本例中,该元素的name即为books。
    3、获取子元素数据
    获取根元素后,便可以一层一层的去获取他的子元素信息。如果知道子元素的标签名称,便可以直接调用element("name")方法获取该子元素。如果不知道子元素的名称,或者想直接获取该元素下的全部子元素,可以调用elements()方法获取一个包括全部元素的list,然后进行下一步的处理。
    4、输出元素信息
    调用getName()方法获取当前元素的元素名,attributeValue()获取属性名。如果当前元素没有子元素,则调用getText()方法获取元素值。
  • 相关阅读:
    fstream的使用方法
    Java按键事件KeyEvent
    java之 22天 GUI 图形界面编程(二)
    java之 22天 GUI 图形界面编程(一)
    java使用省略号代替多参数(参数类型... 参数名)
    jsoup
    C++获得本机所有网卡的IP和MAC地址信息
    otl中遇到的一些字符数组长度问题
    otl使用存储过程或是LEFT JOIN时提示输出类型未知的问题
    Android:布局实例之常见用户设置界面
  • 原文地址:https://www.cnblogs.com/keyi/p/7131196.html
Copyright © 2020-2023  润新知