dom4j解析

try
{
   Document doc = read("students.xml");
   Element root = getRootElement(doc);

for ( Iterator<Element> i = root.elementIterator("student"); i.hasNext();) { 
       Element foo =  i.next(); 
      
    for ( Iterator<Element> j = foo.elementIterator(); j.hasNext();) { 
           Element subelement = j.next(); 
           if(subelement.getName().equals("name")){
   
    System.out.println("name:"+subelement.getData());
    }
    if(subelement.getName().equals("age")){
   
    System.out.println("age:"+subelement.getData());
    }
        }  
      

}
catch (DocumentException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}

}
//读取XML,输入文件名,返回XML文档 
    public static Document read(String fileName) throws  DocumentException { 
        SAXReader reader = new SAXReader(); 
        Document document = reader.read(new File(fileName)); 
        return document; 
    } 
   
    //获取ROOT节点
    public static Element getRootElement(Document doc){ 
        return doc.getRootElement(); 
    } 

--------------------------------------------------------------



<?xml version="1.0" encoding="UTF-8"?>
<students>
<student>
    <age>22</age>
<name>李小龙</name>
</student>
<student>
<name>黄飞鸿</name>
<age>55</age>

</student>
<student>
    <age>88</age>
<name>霍元甲</name>

</student>
</students>


-------------------------------



对List的遍历有三种方式  
   
   List<A>    list    =    new    ArrayList<A>();  
   list.add(new    A());  
   list.add(new    A());  
   ...  
   
   第一种:  
   for(Iterator<A>    it    =    list.iterator();    it.hasNext();    )    {  
       ....  
   }  
   这种方式在循环
执行过程中会进行数据锁定,    性能稍差,    同时,如果你想在寻欢过程中去掉某个元素,只能调用it.remove方法,    不能使用list.remove方法,    否则一定出并发访问的错误.  
   
   第二种:  
   for(A    a    :    list)    {  
       .....  
   }  
   内部调用第一种,    换汤不换药,    这种循环方式还有其他限制,    不建议使用它  
   
   第三种:  
   for(int    i=0;    i<list.size();    i++)    {  
       A    a    =    list.get(i);  
       ...  
   }  
   内部不锁定,    效率最高,    但是当写多线程时要考虑并发操作的问题!

你可能感兴趣的:(dom4j)