Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> 在Android開發中使用SAX解析XML

在Android開發中使用SAX解析XML

編輯:Android開發實例

XML作為一種可擴展標記語言,在網絡環境中具有跨平台的特點,同時,XML的簡單使其易於在任何應用程序中讀寫數據,因此無論作為數據存儲或者網絡傳輸,XML顯得非常重要。在Android中解析XML的方法大概有DOM、SAX、Pull三種。本文將介紹使用SAX解析XML。

 

 

SAX技術是通過繼承DefaultHandler 以實現指定XML的SAX解析器,其中需要覆蓋父類中的幾個常用方法:

//開始xml文檔的回調函數
public void startDocument();
//結束xml文檔的回調函數
public void endDocument();
//遇到元素開始標記時回調此函數
public void startElement(String uri, String localName, String qName,Attributes attributes);
//遇到元素結束標記時回調此函數
public void endElement(String uri, String localName, String qName);
//遇到元素值或屬性值就回調此函數
public void characters(char[] ch, int start, int length);

以下我們通過實例分析SAX解析XML過程的具體過程,XML文檔內容如下:

<?xml version="1.0" encoding="utf-8"?>
<root>
  <title>SAX解析XML</title>
    <case id="1">
      <name>FENGFLY.COM</name>
      <url>http://www.fengfly.com</url>
    </case>
    <case id="2">
      <name>GOOGLE.COM</name>
      <url>http://www.google.com</url>
    </case>
</root>

實現SAX解析器,解析以上xml文檔中對應的內容。

public class SAXHandler extends DefaultHandler {
    private boolean mIsIdTag = false;
    private boolean mINameTag = false;
    private boolean mIsUrlTag = false;
    private String mResult = "";
    @Override
    public void startDocument() throws SAXException {
        super.startDocument();
    }
    @Override
    public void endDocument() throws SAXException {
        super.endDocument();
    }
    @Override
    public void startElement(String uri, String localName, String qName,
            Attributes attributes) throws SAXException {
        if (localName == "id")
            mIsIdTag = true;
        else if (localName == "name")
            mINameTag = true;
        else if (localName == "url")
            mIsUrlTag = true;
        else if (localName == "case")
            mResult += "\nname:" + attributes.getValue("name");   
    }
    @Override
    public void endElement(String uri, String localName, String qName)
            throws SAXException {
        if (localName == "id")
            mIsIdTag = false;
        else if (localName == "name")
            mIsNameTag = false;
        else if (localName == "url")
            mIsUrlTag = false;
    }
    @Override
    public void characters(char[] ch, int start, int length)
            throws SAXException {
        if (mIsIdTag)
            mResult += "\nID:"+new String(ch, start, length);
        else if (mIsNameTag)
            mResult += "\nName:" + new String(ch, start, length);
        else if (mIsUrlTag)
            mResult += "\nUrl:" + new String(ch, start, length);
    }
    public String getResult(){
        return mResult;
    }
}

構建好解析器,開始解析xml文檔。

SAXHandler handler = new SAXHandler();
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser parser = factory.newSAXParser();
XMLReader reader = parser.getXMLReader();
reader.setContentHandler(handler);
reader.parse(new InputSource(this.getResources().openRawResource(R.raw.case)));
String xmlStr = handler.getResult();

以上即是在Android中通過SAX解析XML文件的整個過程,在後面將繼續講解在Android中的另兩種XML解析方法DOM和Pull。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved