2013-07-19 38 views
1

解析XML我嘗試從this異常而在Android的

以下解析XML是我的解析代碼:

while (eventType != XmlPullParser.END_DOCUMENT) { 
      switch (eventType) { 
       case XmlPullParser.START_TAG: 
        if (parser.getName().equals("Title")) { 
         current_tag = tag_title; 
         deal = new Deals(); 
        } 
        if (parser.getName().equals("MSRP")) { 
         current_tag = tag_msrp; 
        } 
        if (parser.getName().equals("ConvertedCurrentPrice")) { 
         current_tag = tag_convertedprice; 
        } 
        if (parser.getName().equals("SavingsRate")) { 
         current_tag = tag_savings; 
        } 
        if (parser.getName().equals("SmallPictureURL")) { 
         current_tag = tag_icon; 
        } 

        break; 
       case XmlPullParser.END_TAG: 
        if (parser.getName().equals("Item")) { 
         current_tag = -1; 
         deals.add(deal); 
        } 
        break; 
       case XmlPullParser.TEXT: 
        String value = parser.getText(); 
        switch (current_tag) { 
         case tag_title: 
          deal.setTitle(value); 
          break; 
         case tag_msrp: 
          deal.setMSRP(value); 
          break; 
         case tag_convertedprice: 
          deal.setconvertedPrice(value); 
          break; 
         case tag_savings: 
          deal.setSavings(value); 
          break; 
         case tag_icon: 
          System.out.println("Icon for the current deal is: "+value); 
          deal.setIcon(value); 
          break; 
         default: 
          break; 
        } 
        current_tag = -1; 
        break; 
      } 
      eventType = parser.next(); 
     } 
    } catch (XmlPullParserException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

在生產線eventType = parser.next()我得到以下異常:

07-19 10:43:23.262: W/System.err(922): org.xmlpull.v1.XmlPullParserException: expected: /link read: head (position:END_TAG </head>@1:427 in [email protected]) 
07-19 10:43:23.272: W/Trace(922): Unexpected value from nativeGetEnabledTags: 0 
07-19 10:43:23.272: W/Trace(922): Unexpected value from nativeGetEnabledTags: 0 
07-19 10:43:23.282: W/System.err(922): at org.kxml2.io.KXmlParser.readEndTag(KXmlParser.java:970) 
07-19 10:43:23.282: W/System.err(922): at org.kxml2.io.KXmlParser.next(KXmlParser.java:372) 
07-19 10:43:23.282: W/System.err(922): at org.kxml2.io.KXmlParser.next(KXmlParser.java:310) 
07-19 10:43:23.282: W/System.err(922): at com.nykkos.dailydeals.Parsers.parseDeals(Parsers.java:91) 
07-19 10:43:23.282: W/System.err(922): at com.nykkos.dailydeals.WebServices.downloadDeals(WebServices.java:37) 
07-19 10:43:23.282: W/System.err(922): at com.nykkos.dailydeals.DealsActivity.run(DealsActivity.java:59) 

我沒有發現任何明顯的原因,爲什麼會發生這種情況。

任何幫助解決這個問題都非常感謝。

+1

你確定你確實解析了你發佈的鏈接嗎?因爲從我在跟蹤中可以看到的內容看來,好像是在解析HTML文檔。 – snrlx

回答

1

很可能您不會嘗試解析您認爲的XML。相反,您似乎解析了一個HTML格式的文檔,該文檔格式不正確。這是因爲一些HTML標籤不需要關閉標籤,你居然碰上其中一個像下面的例子:

<head> 
    <link rel="stylesheet" type="text/css" href="theme.css"> 
</head> 

所以請確保你真正嘗試解析你想讓你的XML至。檢查您嘗試從中獲取XML的URL。您提供的鏈接實際上應該可行,但也許您的代碼中存在拼寫錯誤。

另外調試你的代碼並檢查你的InputStream裏面是什麼。我猜裏面的東西與你期望的有很大的不同。

+0

問題是我錯誤地使用了'http:// www.deals.ebay.com // feeds/xml'而不是'http:// www.deals.ebay.com/feeds/xml' – user1400538

+0

我是很高興你明白了:)祝你好運! – snrlx