mucchin | XML相關的Andr​​oid永



如何讀取XML Android應用


如何分析在Android應用程序加載的XML?

我想你們中的很多人都在思考,在Android應用程序的應用程序,做一些事情來分析XML文件。
舉例來說,如果說,要使用的Web服務API,XML是一種重要的分析技術。
(與Web服務API是我們與樂天,亞馬遜等,如招聘,許多企業提供的東西,這裡是他們的描述被省略了。)
所以,我將介紹在Android讀取XML,分析的過程,我已經做了。


首先,離開它導入以下兩個類。
導入org.xmlpull.v1.XmlPullParser;
導入android.util.Xml;


但我認為,如果當你使用的Web服務API,和方式進口的通信的HTTP XML文件中,獲得1 InputStream的實例,在這段時間的描述,我們正在閱讀的InputStream的實例XML文件已經我將假設。
如下:1,為了獲得XmlPullParser實例。


XmlPullParser xmlPullParser = Xml.newPullParser();


XmlPullParser,請認為類和提供能力的人去閱讀以下的XML元素。
如下:2,設置的InputStream XML文件已加載到XmlPullParser。


xmlPullParser.setInput(“UTF-8”);


※是第一個參數是第二個參數的InputStream實例,請指定XML文件的編碼。


好了,準備去分析這個XML現在已經準備好。
沿休息,想做的事,但去閱讀它,在這裡,我們將被調用,我們期望它如下。
•在從開始到結束的XML文件,以獲得一個(價值)的名稱標記的值列表。
“名稱標籤價值”是以下XXX的一部分。
<name>的XXX </名稱>
首先,讓我們看看示例代碼。




字符串[] =新的String []();
計數器= 0;
(E = xmlPullParser.getEventType();Ë= XmlPullParser.END_DOCUMENT的;電子= xmlPullParser.next()){
(E == XmlPullParser.START_TAG的&& xmlPullParser.getName()等於(“名稱”)){
[計數器] = xmlPullParser.nextText();
計數器+
}
}


沒有只寫最少的代碼,看起來像這樣。
xmlPullParser是,是,我沒有每個元素或每行一個,我們會讀一個真正仔細和XML。
如果開始標記,值,結束標籤,如果你使用的(任何),是一個機制的開始和結束標記⇒⇒標籤值XmlPullParser.next。
任何方便或不方便,我將可以做到這一點。
我第一次我很困惑。
如果你看看在for循環中,是初始值()xmlPullParser.getEventType。
在這一點上,xmlPullParser只是因為你設置的InputStream()的價值已成為“START_DOCUMENT”是指開始getEventType。
結束循環的條件是,,直到“END_DOCUMENT”意味著過去。
循環的程度,下次運行()XmlPullParser.next的。
被稱為循環。
你可以是一個結果,這是說,會讀從開始到結束的XML文件。
下面是一個循環裡面的描述。
描述的if語句的條件。
簡而言之,它意味著“如果是名稱標記的開始標記”。
我想要的,但“價值”,在打開和關閉標籤的名字,在自己的“價值”,已成為當前xmlPullParser括值,它是什麼第一名的標籤已包圍,我不走。 (GetName.()返回值將變為空)
因此,在當前打開的姓名標籤的開始標籤時,需要在一個句子中的下列元素的字符串,如果使用()nextText的。
這是被稱為作為一個字符串來檢索下一個元素的方法。


有其他方式,因此,一個很好的例子是上述並不一定能理解。
我一直在做大致如上所述。
順便說一下,如何價值,而是採取的標籤的屬性,那麼,提出在這裡。
例如,讓說,類似的東西在上面一樣,反過來,id屬性的標籤名稱列表。
“id屬性的標籤名稱”下列YYY的一部分。
<name id=yyy> XXX </名稱>


for循環,if語句,所​​以一樣的,只是如果聲明的內容。
做到以下幾點。


[計數器] = xmlPullParser.getAttributeValue(NULL,“姓名”);


如果你的屬性,使用()GetAttributeValue獲取如上所述。
第一個參數指定“名稱”屬性的名稱是空的,第二個參數。
根據API文檔,使得它的“命名空間”的第一個參數,第二個參數是“name”屬性。
我寫一個命名空間,如果惰性的,第一個參數,做不,這是不為null,為null。
關於“名稱空間的XML”,我只是根本沒有細節,這裡是他們的描述沒有。
不,不能。 (笑)
GetAttributeValue獲取(),使用一個,它也提供了一個int類型的參數與另一模式。
由於這是指定的索引,如果這種情況下,以取代如果你屬性,以便第一個,


[計數器] = xmlPullParser.getAttributeValue(0);


會。
作為數組下標,您指定的實際數目減去1得到的一個值。

而且,如果上面介紹的甚至是唯一的方法,可以得到在分析XML Web服務的API。