2013-05-28 83 views
1

編輯1:如何解析android中嵌入的XML標籤?

我已經開始與XmlPullParser嘗試,我正在考慮處理類型的字典中類型的字典(這聽起來錯了,我知道)我可以使用遞歸像readDict(XmlPullParser ),並且在遇到字典元素時調用它。

這可以與包含HashMap對象列表的簡單詞典模型類一起使用。

我將保持這個問題,更新我進步...

原題:

有使XML的格式如下解析的機器人庫?

<dict> 
    <key>..</key> 
    <string>..</string> 
    <key> 
    <array> 
     <dict> 
     <key> 
     <string> 
     <key> 
     <array> 
      <dict> 
       <key> 
       <string> 
      </dict> 
      <dict>...</dict> 
      <dict>...</dict> 
     </array> 
     </dict> 
    </array> 
</dict> 

完整的XML文件,可以發現在:http://www.tsn.ca/config/iphone/TSNiphoneconfig.xml

問題:

正如你所看到的,一些標籤被嵌入 「內」 自己。這是我第一次看到這個。

我已經調查SAX解析器工廠XML拉式解析器和**的Android簡單的庫**。 我真正想要的是一個庫,我可以用它來解析XML,就像SIMPLE一樣,並允許我創建與XML元素相匹配的數據模型文件。

但是,如果我不能使用庫,我將如何解析這種獨特的XML,例如XML Pull Parser ..?

+0

你的意思是「標籤嵌入」在「他們自己」內嗎?你想解析標籤嗎? – Abhishek

+0

那麼一個字典包含另一個字典 - 意思是一個字典可以有一個孩子字典。 – ryvianstyron

回答

0

因此,我可以想出這個問題的最佳解決方案是簡單地使用遞歸。 編寫方法分別解析每個標記,並將XMLPullParser作爲參數傳入。

所以這裏的一些僞代碼:

parseArray(XmlPullParser xmlpp) 
{ 
    // require start and end tags 
    if you hit another tag, call its corresponding method 
} 

如果你在parseDict並觸及字典標籤這樣的話,你可以簡單的()再次調用parseDict。

只要你抓取你的數據並將其設置爲某種數據模型,dict就會被重複嵌入在dict中並不重要,因爲你的數據模型將以任何方式工作。

0

如果妳只是想分析裏面的數據「快譯通」(我的意思是嵌入式「字典」不依賴父母的字典'),然後u有沒有必要遞歸logic.U可以簡單地這樣做:

int eventType = xpp.getEventType(); //xpp is reference of XmlPullParser 
while (eventType != XmlPullParser.END_DOCUMENT) { 
      if (eventType == XmlPullParser.START_TAG) { 
       if (xpp.getName().equalsIgnoreCase("dict")) { 
        //do something 
       } 
eventType = xpp.next(); 
      } 

每當'dict'將被解析時,它將進入相同的循環。