您好,登錄后才能下訂單哦!
SAX工作原理:當掃描到文檔(document)開始與結束、元素(element)開始與結束、文檔(document)結束等地方時同志時間處理函數,由時間處理函數做相應動作,然后繼續同樣的掃描,直至文檔結束。
從網絡上下載XML代碼進行處理
讀取網絡文件內容的方法參考 http://shamrock.blog.51cto.com/2079212/1580269
test.xml
<?xml version="1.0" encoding="UTF-8"?> <workers> <worker id="A01"> <name>Tom</name> <sex>男</sex> <status>經理</status> <address>湖北</address> <money>20000</money> </worker> <worker id="A02"> <name>Tom1</name> <sex>男</sex> <status>員工</status> <address>湖北武漢</address> <money>22000</money> </worker> <worker id="A03"> <name>Tom2</name> <sex>男</sex> <status>員工</status> <address>湖北宜昌</address> <money>20200</money> </worker> </workers>
下載文件不能在主線程中進行。
class MyHandler extends Handler { public MyHandler() { } public MyHandler(Looper looper) { super(looper); } @Override public void handleMessage(Message msg) { super.handleMessage(msg); Bundle bundle = msg.getData(); String urlStr = bundle.getString("urlStr"); String fileName = bundle.getString("fileName"); String path = bundle.getString("path"); HttpDownloader httpDownloader = new HttpDownloader(); //將讀取到的XML文件的內容保存到result中 String result = httpDownloader.download(urlStr); System.err.println(result); Toast.makeText(MainActivity.this, "~~", Toast.LENGTH_SHORT).show(); try { // 創建一個SAXParserFactory SAXParserFactory factory = SAXParserFactory.newInstance(); XMLReader reader = factory.newSAXParser().getXMLReader(); // 為XMLReader設置內容處理器 reader.setContentHandler(new MyContentHandler()); // 開始解析文件 reader.parse(new InputSource(new StringReader(result))); } catch (Exception e) { e.printStackTrace(); } } }
MyContentHandler.java
package com.example.xml; import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler; public class MyContentHandler extends DefaultHandler { String hisname, address, money, sex, status; String tagName; public void startDocument() throws SAXException { System.out.println("````````begin````````"); } public void endDocument() throws SAXException { System.out.println("````````end````````"); } public void startElement(String namespaceURI, String localName, String qName, Attributes attr) throws SAXException { tagName = localName; if (localName.equals("worker")) { //獲取標簽的全部屬性 for (int i = 0; i < attr.getLength(); i++) { System.out.println(attr.getLocalName(i) + "=" + attr.getValue(i)); } } } public void endElement(String namespaceURI, String localName, String qName) throws SAXException { //在workr標簽解析完之后,會打印出所有得到的數據 tagName = ""; if (localName.equals("worker")) { this.printout(); } } public void characters(char[] ch, int start, int length) throws SAXException { if (tagName.equals("name")) hisname = new String(ch, start, length); else if (tagName.equals("sex")) sex = new String(ch, start, length); else if (tagName.equals("status")) status = new String(ch, start, length); else if (tagName.equals("address")) address = new String(ch, start, length); else if (tagName.equals("money")) money = new String(ch, start, length); } private void printout() { System.out.print("name: "); System.out.println(hisname); System.out.print("sex: "); System.out.println(sex); System.out.print("status: "); System.out.println(status); System.out.print("address: "); System.out.println(address); System.out.print("money: "); System.out.println(money); System.out.println(); } }
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。