用SAXReader方式解析:实例测试类TestXML
package* importjava.io.ByteArrayInputStream; importjava.util.Iterator; importorg.dom4j.Document; importorg.dom4j.Element; importorg.dom4j.io.SAXReader; publicclasstestXml{ /** *@paramargs */ publicstaticvoidmain(String[]args){ try{ //TodoAuto-generatedmethodstub //定义要解析的XML字符串 StringtransMessage="<?xmlversion=/"1.0/"encoding=/"GBK/"?><message>" +"<body>" +"<ticketNotify>" +"<ticketid=/"6000012007051000000231/"dealTime=/"20070510165423/"status=/"0000/"message=/"成功,系统处理正常/"/>" +"<ticketid=/"6000012007051000000232/"dealTime=/"20070510165424/"status=/"2012/"message=/"禁止倍投/"/>" +"</ticketNotify>"+"</body></message>"; //创建XML解析对象 SAXReaderreader=newSAXReader(); //定义一个文档 Documentdocument=null; //将字符串转换为 document=reader.read(newByteArrayInputStream(transMessage .getBytes("GBK"))); //得到xml的根节点(message) Elementroot=document.getRootElement(); //定义子循环体的变量 Elementticket=null; Iteratortickets=null; for(tickets=root.element("body").element("ticketNotify").elementIterator();tickets.hasNext();){ ticket=(Element)tickets.next(); System.out.print(ticket.attributeValue("id")+""); System.out.print(ticket.attributeValue("dealTime")+""); System.out.println(ticket.attributeValue("status")); } //Element.asXML方法,获得包括该标签的所有XML数据 System.out.println(root.element("body").asXML()); }catch(Exceptione){ e.printstacktrace(); } } }
总结: Documentdocument=newSAXReader.reader(“xml文路径/文件名xxx.xml”);//得到Document对象 Elementroot=document.getRootElement()//获得根节点 Iteratoriterator=root.elementIterator();//从根节点遍历子节点 //List<Element>list=ele.elements("ele");//获取节点循环遍历 Iteratoriterator=Element.elementIterator();//再从子节点在遍历其子节点 对节点访问其属性用:AttributeleaderAttr=Element.attribute(“xxx”); 对节点访问其某个属性leaderAttr的名称:leaderAttr.getName(); 对节点访问其某个属性leaderAttr的值:leaderAttr.getValue() 对节点访问其名称:Element.getName(); 对节点访问其文本:Element.getText();