用递归方法解析XML

来源:互联网 发布:ps是什么软件 编辑:程序博客网 时间:2024/05/17 00:02
package test;


import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;


import javax.swing.RootPaneContainer;


import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;


public class xml {
public static void main(String[] args) throws Exception {
String xml = "<?xml version='1.0' encoding='GBK'?><message finishTime='2012-12-18 12:03:06'><request func='car_pay_sync' return='true'><content><orderInfo><insuranceApplicantNo>TDDK201233019102001557</insuranceApplicantNo ><paymentNo>123456</paymentNo><paymentTime>2012-12-1812:03:06</paymentTime><payTime>2012-12-18 12:03:06</payTime><payType>快钱POS </payType><utmsn>123456</utmsn></orderInfo></content></request></message>";
Map<String, Object> map = new HashMap<String,Object>();
//读取xml转换的字符串
Document document = DocumentHelper.parseText(xml);
Element root=document.getRootElement();//获取根节点  
getNodes(root);//从根节点开始遍历所有节点  
}
public static void getNodes(Element node){  
   System.out.println("--------------------");       
   //当前节点的名称、文本内容和属性  
   System.out.println("当前节点名称:"+node.getName());//当前节点名称  
   System.out.println("当前节点的内容:"+node.getTextTrim());//当前节点名称  
   List<Attribute> listAttr=node.attributes();//当前节点的所有属性的list  
   for(Attribute attr:listAttr){//遍历当前节点的所有属性  
       String name=attr.getName();//属性名称  
       String value=attr.getValue();//属性的值  
       System.out.println("属性名称:"+name+"属性值:"+value);  
   }  
   //递归遍历当前节点所有的子节点  
   List<Element> listElement=node.elements();//所有一级子节点的list  
   for(Element e:listElement){//遍历所有一级子节点  
       getNodes(e);//递归  
   }  
}  

}
原创粉丝点击