dom4j遍歷巢狀xml

程式設計釋夢發表於2018-06-01

public static void main(String[] args) throws Exception {	
String retxml = ""//需要解析的xml		
Document	dom = DocumentHelper.parseText(retxml);
Element rootElement = dom.getRootElement();// 獲取根節點:
				  getNodes(rootElement);// 呼叫遍歷節點的方法,從跟節點遍歷
}
 /** 
     * 從指定節點Element node開始,遞迴遍歷其所有子節點 
	 * @throws DocumentException 
     */  
    public static void getNodes( Element node) throws DocumentException {  
        // 當前節點的名稱、文字內容和屬性  
        System.out.println("節點名稱:" + node.getName());// 節點名稱  
        System.out.println("節點的內容:" + node.getTextTrim());// 節點內容 
        final List<Attribute> listAttr = node.attributes();// 節點的所有屬性  
//這裡是xml下body節點下面還有xml,也就是巢狀xml的。可以根據第一次遍歷輸出的節點屬性檢視
        if("body".equals(node.getName())){
        	String bodyxml=node.getTextTrim();//把body的節點內容儲存為一個xml
        	Document dom= DocumentHelper.parseText(bodyxml);
			  Element rootElement = dom.getRootElement();
			  getNodes(rootElement);再次開始遍歷
        }
        for (final Attribute attr : listAttr) {// 遍歷當前節點的所有屬性  
            final String name = attr.getName();// 屬性名稱  
            final String value = attr.getValue();// 屬性的值  
        }  
  
        // 遞迴遍歷當前節點所有的子節點  
        final List<Element> listElement = node.elements();// 所有一級子節點的list  
        for (final Element e : listElement) {// 遍歷所有一級子節點  
            getNodes(e);// 遞迴  
        }  
    }

相關文章