• 操作XML-dom4j


    首先是到dom4j的官网dom4j文件包,下载之后解压如下所示。

    在根目录中,找到dom4j-1.6.1jar包,加入到eclipse中的lib文件下,最后build path一下,即可使用相关的方法。

    1、创建XML文档

    1.1创建XML文档对象

    使用DocumentHelper类中的createDocument()方法,创建一个XML文档对象,代码如下:

    Document document = DocumentHelper.createDocument();

    另外也可以使用DocumentFactory对象也可以创建一个XML文档对象。

    DocumentFactory documentFactory=DocumentFactory.getInstance();

    document=documentFactory.createDocument();

    1.2创建根节点

    (1)使用DocumentHelper对象的createElement()方法创建一个普通的节点信息。

    public static Element createElement(String name)

    (2)Document对象的setRootElement()方法

    public void setRootElement(Element element) ;

    例如:创建一个值 包括根节点的XmL文档的具体代码

      Document document = DocumentHelper.createDocument();
      Element rootElement = DocumentHelper.createElement("person");
      document.setRootElement(rootElement);
      rootElement.addComment("这是根节点");//添加注释

    2、解析XML文档

    (1)、加载XML文件

    SAXReader saxReader =new SAXReader();

    document = saxReader.read(new File(filename));

    (2)、获取根节点

    Element root = dom.getRootElement();

    (3)、遍历节点信息

    for (Iterator i =root.elementIterator(); i.hasNext();) {

      Element el =(Element) i.next();

      if(catNameEn.equals(el.elementTextTrim("engName"))){

        flag = false;

        break;

      }

    }

     下面就以dom4j解析本博客的文章信息,

    首先分析网页的xml文件格式,打开本博客的“订阅”链接,在网页显示xml文件格式如下:

     

    然后在打开entry节点,如下所示:

    分析一下:

    1、要读取网页数据,首先需要创建一个URL对象,用本博客的“订阅”链接创建URL对象,代码如下:

    URL url = new URL("http://feed.cnblogs.com/blog/u/120107/rss");
    SAXReader reader = new SAXReader();
    Document document = reader.read(url);

    2、获取XML文档的根节点,确定根节点的数量,然后遍历内容,代码如下:

    Element rootElement = document.getRootElement();
    List list_item = rootElement.elements("entry");

    3、遍历XML文件的数据,代码如下:

    if (list_item.size() > 0) {
    list = new ArrayList<Object>();
    }
    for (int i = 0; i < list_item.size(); i++) {
    Element item = (Element) list_item.get(i);
    System.out.println("id:" + item.element("id").getText());
    System.out.println("title:" + item.element("title").getText());
    System.out.println("summary:" + item.element("summary").getText());
    System.out.println("published:" + item.element("published").getText());
    System.out.println("updated:" + item.element("updated").getText());
    System.out.println("name:" + item.element("author").element("name").getText());
    System.out.println("uri:" + item.element("author").element("uri").getText());
    System.out.println("************************");
    System.out.println();
    System.out.println();
    System.out.println();
    System.out.println();
    }

    最后整个测试代码如下:

    import java.io.File;
    import java.io.FileWriter;
    import java.net.URL;
    import java.util.ArrayList;
    import java.util.List;
    
    import org.dom4j.Document;
    import org.dom4j.DocumentHelper;
    import org.dom4j.Element;
    import org.dom4j.io.OutputFormat;
    import org.dom4j.io.SAXReader;
    import org.dom4j.io.XMLWriter;
    
    /***
     * 使用dom4j开源项目,需要引入dom4j-1.6.1.jar和jaxen-1.1-beta-6.jar包
     * 
     * @author ouxu
     *
     */
    public class XmlHelper {
    public void readXmlByUrl() throws Exception {
    		List<Object> list;
    		URL url = new URL("http://feed.cnblogs.com/blog/u/120107/rss");
    		SAXReader reader = new SAXReader();
    		Document document = reader.read(url);
    		Element rootElement = document.getRootElement();
    		List list_item = rootElement.elements("entry");
    		if (list_item.size() > 0) {
    			list = new ArrayList<Object>();
    		}
    		for (int i = 0; i < list_item.size(); i++) {
    			Element item = (Element) list_item.get(i);
    			System.out.println("id:" + item.element("id").getText());
    			System.out.println("title:" + item.element("title").getText());
    			System.out.println("summary:" + item.element("summary").getText());
    			System.out.println("published:" + item.element("published").getText());
    			System.out.println("updated:" + item.element("updated").getText());
    			System.out.println("name:" + item.element("author").element("name").getText());
    			System.out.println("uri:" + item.element("author").element("uri").getText());
    			System.out.println("************************");
    			System.out.println();
    			System.out.println();
    			System.out.println();
    			System.out.println();
    		}
    
    	}
    
    	public static void main(String[] args) {
    		try {
    			new XmlHelper().readXmlByUrl();
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    	}
    }
    

    测试代码,运行通过,部分结果如下(由于数据比较多,一屏数据显示不完)

     ok,目前,学习了dom4j项目的使用,也成功完成了一个小小的应用。

  • 相关阅读:
    C# Socket TcpClient 无法从传输连接中读取数据: 远程主机强迫关闭了一个现有的连接。。
    C#编程使用Managed Wifi API连接无线SSID
    中国最精确的电子地图,可以找到你家哦
    利用mysql数据库中的TMD表修复“is marked as crashed and last (automatic?) repair failed”的错误 Database query error
    Google Directions API 中路线编码解析
    c语言 nmealib-0.5.3 学习 简单代码 ,供参考
    【转】IT管理人才必备的十大能力
    【转】10个让人受益的管理原理
    【转】耐心看
    【转】对于移动APP测试的一个小技巧
  • 原文地址:https://www.cnblogs.com/gyouxu/p/3869029.html
Copyright © 2020-2023  润新知