Android學習筆記-XML處理

來源:互聯網
上載者:User

標籤:sax

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);}@Overridepublic 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 {// 建立一個SAXParserFactorySAXParserFactory 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();}}



本文出自 “阿凡達” 部落格,請務必保留此出處http://shamrock.blog.51cto.com/2079212/1582142

Android學習筆記-XML處理

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.