日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

Java用SAX解析XML

發布時間:2023/12/20 asp.net 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java用SAX解析XML 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

Myhandler

package?com.heli.xml.sax;/***?用SAX解析XML的Handler*/ import?java.util.ArrayList; import?java.util.HashMap; import?java.util.List; import?java.util.Map;import?org.xml.sax.Attributes; import?org.xml.sax.SAXException; import?org.xml.sax.helpers.DefaultHandler;public?class?Myhandler?extends?DefaultHandler?{//?存儲正在解析的元素的數據private?Map<String,?String>?map?=?null;//?存儲所有解析的元素的數據private?List<Map<String,?String>>?list?=?null;//?正在解析的元素的名字String?currentTag?=?null;//?正在解析的元素的元素值String?currentValue?=?null;//?開始解析的元素String?nodeName?=?null;public?Myhandler(String?nodeName)?{//?TODO?Auto-generated?constructor?stubthis.nodeName?=?nodeName;}public?List<Map<String,?String>>?getList()?{return?list;}//?開始解析文檔,即開始解析XML根元素時調用該方法@Overridepublic?void?startDocument()?throws?SAXException?{//?TODO?Auto-generated?method?stub//System.out.println("--startDocument()--");//?初始化Maplist?=?new?ArrayList<Map<String,?String>>();}//?開始解析每個元素時都會調用該方法@Overridepublic?void?startElement(String?uri,?String?localName,?String?qName,?Attributes?attributes)?throws?SAXException?{//?TODO?Auto-generated?method?stub//?判斷正在解析的元素是不是開始解析的元素//System.out.println("--startElement()--"?+?qName);if?(qName.equals(nodeName))?{map?=?new?HashMap<String,?String>();}//?判斷正在解析的元素是否有屬性值,如果有則將其全部取出并保存到map對象中,如:<person?id="00001"></person>if?(attributes?!=?null?&&?map?!=?null)?{for?(int?i?=?0;?i?<?attributes.getLength();?i++)?{map.put(attributes.getQName(i),?attributes.getValue(i));}}currentTag?=?qName;?//?正在解析的元素}//?解析到每個元素的內容時會調用此方法@Overridepublic?void?characters(char[]?ch,?int?start,?int?length)?throws?SAXException?{//?TODO?Auto-generated?method?stub//System.out.println("--characters()--");if?(currentTag?!=?null?&&?map?!=?null)?{currentValue?=?new?String(ch,?start,?length);//?如果內容不為空和空格,也不是換行符則將該元素名和值和存入map中if?(currentValue?!=?null?&&?!currentValue.trim().equals("")?&&?!currentValue.trim().equals("\n"))?{map.put(currentTag,?currentValue);//System.out.println("-----"?+?currentTag?+?"?"?+?currentValue);}//?當前的元素已解析過,將其置空用于下一個元素的解析currentTag?=?null;currentValue?=?null;}}//?每個元素結束的時候都會調用該方法@Overridepublic?void?endElement(String?uri,?String?localName,?String?qName)?throws?SAXException?{//?TODO?Auto-generated?method?stub//System.out.println("--endElement()--"?+?qName);//?判斷是否為一個節點結束的元素標簽if?(qName.equals(nodeName))?{list.add(map);map?=?null;}}//?結束解析文檔,即解析根元素結束標簽時調用該方法@Overridepublic?void?endDocument()?throws?SAXException?{//?TODO?Auto-generated?method?stub//System.out.println("--endDocument()--");super.endDocument();} }

SaxService

package?com.heli.xml.sax;/***?封裝解析業務類*/ import?java.util.List; import?java.util.Map;import?javax.xml.parsers.SAXParser; import?javax.xml.parsers.SAXParserFactory;public?class?SaxService?{public?static?List<Map<String,?String>>?ReadXML(String?uri,?String?NodeName)?{try?{//?創建一個解析XML的工廠對象SAXParserFactory?parserFactory?=?SAXParserFactory.newInstance();//?創建一個解析XML的對象SAXParser?parser?=?parserFactory.newSAXParser();//?創建一個解析助手類Myhandler?myhandler?=?new?Myhandler("uncall");parser.parse(uri,?myhandler);return?myhandler.getList();}?catch?(Exception?e)?{e.printStackTrace();}?finally?{}return?null;} }

XmlSaxTest

package?com.heli.xml.sax;/***?程序入口*/import?java.util.ArrayList; import?java.util.HashMap; import?java.util.Iterator; import?java.util.Map;public?class?XmlSaxTest?{/***?@param?args*/public?static?void?main(String[]?args)?{ArrayList<Map<String,?String>>?list?=?(ArrayList<Map<String,?String>>)?SaxService.ReadXML("e:\\test.xml",?"class");for?(int?i?=?0;?i?<?list.size();?i++)?{HashMap<String,?String>?temp?=?(HashMap<String,?String>)?list.get(i);Iterator<String>?iterator?=?temp.keySet().iterator();while?(iterator.hasNext())?{String?key?=?iterator.next().toString();String?value?=?temp.get(key);System.out.println("key:"+key?+?"--value:"?+?value?);}}System.out.println("--------------------------------------");System.out.println(list.toString());}}

test.xml

<?xml?version="1.0"?encoding="utf-8"?> <uncall><result>1</result><OnClickCall><Response>success</Response><ActionID>123456</ActionID><Message>Originate?successfully?queued</Message></OnClickCall> </uncall>


轉載于:https://my.oschina.net/ydsakyclguozi/blog/493509

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的Java用SAX解析XML的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。