編輯: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。
View Android所有的控件都是View或者View的子類,它其實表示的就是屏幕上的一塊矩形區域,用一個Rect來表示,left,top表示View相對於它
可以顯示在的Android任務,通過加載進度條的進展。進度條有兩種形狀。加載欄和加載微調(spinner)。在本章中,我們將討論微調(spinner)。Spinner 用
Android作為一個偉大的系統,自然提供了設置默認打開程序的實現.在這篇文章中,我會介紹如何在Android系統中設置默認的程序. 在設置默認程序之前,無非有兩
Android SDK本身提供了一種默認創建菜單的機制。但通過這種機制創建的菜單雖然從功能上很完備,但在界面效果