【问题标题】:Exception while parsing xml in android在android中解析xml时出现异常
【发布时间】:2013-07-19 11:19:11
【问题描述】:

我尝试从this源解析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 java.io.InputStreamReader@40dee498) 
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)

我没有找到任何明显的原因来解释为什么会发生这种情况。

非常感谢您提供解决此问题的任何帮助。

【问题讨论】:

  • 您确定您确实解析了您发布的链接吗?因为从我在跟踪中看到的情况来看,您似乎正在解析 HTML 文档。

标签: android xml xml-parsing


【解决方案1】:

您很可能不会尝试解析您认为的 XML。相反,您似乎解析了一个格式不正确的 HTML 文档。发生这种情况是因为某些 HTML 标记不需要结束标记,而您实际上遇到了其中一个,如下例所示:

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

因此,请确保您确实尝试解析您打算解析的 XML。检查您尝试从中获取 XML 的 URL。您提供的链接实际上应该可以工作,但您的代码中可能有错字。

另外调试您的代码并检查您的 InputStream 中的内容。我猜里面的东西和你想象的很不一样。

【讨论】:

  • 问题是我错误地使用了http://www.deals.ebay.com//feeds/xml 而不是http://www.deals.ebay.com/feeds/xml
  • 我很高兴你明白了 :) 祝你好运!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多