• 利用Dom4j解析xml文档


    本次我将学习利用Dom4j中的SAXReader(还有个是DOMReader)来解析xml 文档,解析的xml为:test.xml,源码如下

    <?xml version="1.0" encoding="UTF-8"?>
    <学生名册>
    	<学生 学号="1">
    		<姓名>张三</姓名>
    		<性别>男</性别>
    		<年龄>20</年龄>
    	</学生>
    	<学生 学号="2">
    		<姓名>李四</姓名>
    		<性别>女</性别>
    		<年龄>19</年龄>
    	</学生>
    	<学生 学号="3">
    		<姓名>王五</姓名>
    		<性别>男</性别>
    		<年龄>21</年龄>
    	</学生>
    </学生名册>
    

    要解析xml,首先要创建SAXReader,然后读取xml获得它的Document对象。

    	SAXReader saxReader=new SAXReader();
             // 读取xml文档
           Document document=saxReader.read(new File("test.xml"));

    之后我们就可以获得其根元素节点,以及根元素下的元素

     //获得xml文档的根节点	
    	    Element root=document.getRootElement();
    	    System.out.println("rootElement :"+root.getName());
    	    //获取根元素下,所有子元素的集合 
    	    List  childList= root.elements();
    	    System.out.println("childList Size:" +childList.size());
    	    //获取根元素下指定子元素集合
    	    List childList2=root.elements("学生");
    	    System.out.println("childList Size :"+childList.size());
    	    //返回以学生名作为名字的第一个元素
    	    Element first=root.element("学生");
    	    System.out.println("first :"+first.getName());
    	    System.out.println("fist attValue:"+ first.attributeValue("学号"));

    Dom4j,为我们提供了迭代器的功能,elementIterator()、attributeIterator()方便我们遍历元素及属性.

    	for(Iterator iter=root.elementIterator();iter.hasNext();){
    			    Element e=(Element)iter.next();     
    		        //遍历e元素下所有的属性
    		        for (Iterator attrs=e.attributeIterator();attrs.hasNext();){	 	
    	    	    Attribute attr=(Attribute)attrs.next();
    	    	    System.out.println(attr.getName()+":"+e.attributeValue(attr.getName()));
    		    }
    		        //遍历e元素下的所有子元素
    		       for (Iterator subIterator=e.elementIterator();subIterator.hasNext();){
    		    	      Element subElement=(Element)subIterator.next(); 
    		    	      System.err.println(subElement.getName()+":"+subElement.getText());
    
    		       }        
    	    }
     

    至此简单的解析xml文档完毕,附上完成的源代码:

    SAXReader saxReader=new SAXReader();
             // 读取xml文档
    		Document document=saxReader.read(new File("test.xml"));
             //获得xml文档的根节点	
    	    Element root=document.getRootElement();
    	    System.out.println("rootElement :"+root.getName());
    	    //获取根元素下,所有子元素的集合 
    	    List  childList= root.elements();
    	    System.out.println("childList Size:" +childList.size());
    	    //获取根元素下指定子元素集合
    	    List childList2=root.elements("学生");
    	    System.out.println("childList Size :"+childList.size());
    	    //返回以学生名作为名字的第一个元素
    	    Element first=root.element("学生");
    	    System.out.println("first :"+first.getName());
    	    System.out.println("fist attValue:"+ first.attributeValue("学号"));
    	  
    	    //利用迭代器迭代根元素下的所有子元素
    		for(Iterator iter=root.elementIterator();iter.hasNext();){
    			    Element e=(Element)iter.next();     
    		        //遍历e元素下所有的属性
    		        for (Iterator attrs=e.attributeIterator();attrs.hasNext();){	 	
    	    	    Attribute attr=(Attribute)attrs.next();
    	    	    System.out.println(attr.getName()+":"+e.attributeValue(attr.getName()));
    		    }
    		        //遍历e元素下的所有子元素
    		       for (Iterator subIterator=e.elementIterator();subIterator.hasNext();){
    		    	      Element subElement=(Element)subIterator.next(); 
    		    	      System.err.println(subElement.getName()+":"+subElement.getText());
    
    		       }        
    	    }

    输出结果为:

    rootElement :学生名册
    childList Size:3
    childList Size :3
    first :学生
    fist attValue:1
    学号:1
    学号:2
    学号:3
    姓名:张三
    性别:男
    年龄:20
    姓名:李四
    性别:女
    年龄:19
    姓名:王五
    性别:男
    年龄:21


     


     

  • 相关阅读:
    jquery-4 完整表单验证实例
    从程序员的角度分析微信小程序(编程语言:用到什么学什么)
    微信程序开发
    css3-4 css3边框样式
    css3-3 css3背景样式
    boxfilter 实现
    opencv在arm和x86在移植
    PAT 1033. To Fill or Not to Fill (贪婪)
    [git] fatal: This operation must be run in a work tree
    spring与mybatis集成和事务控制
  • 原文地址:https://www.cnblogs.com/wuyida/p/6300453.html
Copyright © 2020-2023  润新知