2012-08-13 15 views
0

我有我試圖解析的以下類型的XML。XmlPullParser沒有通過Xml進行

XmlToBeParsed

,我使用解析的代碼是這一個:

parser.nextTag(); 
parser.require(XmlPullParser.START_TAG, null, "feed"); 

while(parser.nextTag() == XmlPullParser.START_TAG) { 
    parser.require(XmlPullParser.START_TAG, null, "item"); 
    System.out.println(parser.getName()); 
    parser.require(XmlPullParser.END_TAG, null, "item"); 
} 

可能有人請告訴我,我做錯了嗎?我得到的錯誤是XmlPullParserException意外類型位置:TEXT SORIN

回答

0

parser.getName()給出了當前標記的名稱(例如「item」)。你想要當前標籤的文本內容。

變化System.out.println(parser.getName());

parser.require(XmlPullParser.TEXT); 
System.out.println(parser.getText()); 

它仍然會失敗在​​標籤,因爲它沒有文字,但我覺得你的想法。那麼,實際上它會在​​標籤上失敗,因爲您只希望item標籤,但這又不是真正的問題。

+0

您可以給我一個完整的代碼塊,以獲得每個項目標籤文本的while循環嗎?如果一個是而另一個是會發生什麼?我怎樣才能通過這些? – 2012-08-13 12:28:38

1

您正在開始item標記。您必須移動到末尾item標記。通過調用parser.nextTag();否則,require會嘗試匹配item標籤與TEXT之間的結尾標籤item,這會引發異常。

parser.nextTag(); 
parser.require(XmlPullParser.START_TAG, null, "feed"); 

while(parser.nextTag() == XmlPullParser.START_TAG) { 

    parser.require(XmlPullParser.START_TAG, null, "item"); 
    System.out.println(parser.getName()); 
    parser.nextTag(); 
    parser.require(XmlPullParser.END_TAG, null, "item"); 
}