解析XML文件字符串的方法-----SAXReader


用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();

相关文章

php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念