DOM4J处理XML方法记录,附XPATH写法

Java代码 复制代码 收藏代码
  1. package com.test;   
  2.   
  3. import java.io.File;   
  4. import java.io.FileInputStream;   
  5. import java.io.FileOutputStream;   
  6. import java.io.InputStream;   
  7. import java.io.OutputStreamWriter;   
  8. import java.util.ArrayList;   
  9. import java.util.Iterator;   
  10. import java.util.List;   
  11. import java.util.Set;   
  12. import org.dom4j.Attribute;   
  13. import org.dom4j.Document;   
  14. import org.dom4j.DocumentException;   
  15. import org.dom4j.DocumentHelper;   
  16. import org.dom4j.Element;   
  17. import org.dom4j.io.OutputFormat;   
  18. import org.dom4j.io.SAXReader;   
  19. import org.dom4j.io.XMLWriter;   
  20. import com.baje.sz.util.Doc;   
  21.   
  22. public class Dom4jSoap {   
  23.        
  24.     /**  
  25.      * 取根元素  
  26.      * @param path  
  27.      * @return  
  28.      * @throws DocumentException  
  29.      */  
  30.     public static Element getRoot(String path) throws DocumentException{   
  31.         Document document;   
  32.         SAXReader reader=new SAXReader();   
  33.         document=reader.read(new File(path));   
  34.         Element root=document.getRootElement();   
  35.         return root;   
  36.     }   
  37.     public static void readSoap(Element element){   
  38.         if(element.elements().size()==0){   
  39.             System.out.println(element.getName()+"*="+element.getText());   
  40.             return;   
  41.         }   
  42.            
  43.         for (Iterator<Element> iter=element.elementIterator();iter.hasNext();) {   
  44.             Element ele=iter.next();   
  45.             if(ele.getParent().getName().equalsIgnoreCase("Envelope")){   
  46.                 System.out.println("-------------------------Envelope的直接子元素:"+ele.getName()+",,"+ele.attributeValue("xmlns"));   
  47.                    
  48.             }   
  49.             System.out.println(ele.getName()+"%="+ele.getText().trim());   
  50.             if(ele.elements().size()!=0){   
  51.                 System.out.println(("element "+ele.getName()+" has "+ele.elements().size())+(ele.elements().size()==1?" subTag it is ":" subTags there are"));   
  52.                 readSoap(ele);                 
  53.             }      
  54.             if(ele.getName().equals("UserName")){   
  55.                 System.out.println("path="+ele.getPath());   
  56.             }   
  57.         }   
  58.     }   
  59.     /**  
  60.      * 获取节点的元素的值  
  61.      * @param filename  
  62.      * @param xmlpath="//*[name()='Date'][@id='aa']/*[name()='aaa']"  
  63.      * @return  
  64.      */  
  65.     public static String getElementText(String filename, String xmlpath,String encode) {   
  66.         try {   
  67.             Document document;   
  68.             SAXReader reader=new SAXReader();   
  69.             InputStream in = new FileInputStream(new File(filename));   
  70.             document=reader.read(in,encode);   
  71.             List list = document.selectNodes(xmlpath);   
  72.             for(Iterator iter = list.iterator();iter.hasNext();){   
  73.                 Element e = (Element)iter.next();   
  74.                 return e.getText();    
  75.             }                  
  76.             return "";   
  77.         } catch (Exception e) {   
  78.             e.printStackTrace();   
  79.             return "";   
  80.         }   
  81.     }   
  82.     /**  
  83.      * 取指定节点元素的属性的值  
  84.      * @param filename  
  85.      * @param xmlpath="//*[name()='Date'][@id='bb']/@ac"  
  86.      * @param encode  
  87.      * @return  
  88.      */  
  89.     public static String getAttributesText(String filename, String xmlpath,String encode){   
  90.         try {   
  91.             Document document;   
  92.             SAXReader reader=new SAXReader();   
  93.             InputStream in = new FileInputStream(new File(filename));   
  94.             document=reader.read(in,encode);   
  95.             List list = document.selectNodes(xmlpath);   
  96.             for(Iterator iter=list.iterator();iter.hasNext();){   
  97.                 Attribute a = (Attribute)iter.next();   
  98.                 return a.getText();   
  99.             }                              
  100.             return "";   
  101.         } catch (Exception e) {   
  102.             e.printStackTrace();   
  103.             return "";   
  104.         }   
  105.     }   
posted on 2013-02-14 19:18  蜜雪薇琪  阅读(309)  评论(0编辑  收藏  举报