简体   繁体   English

在Android中解析xml时出现异常

[英]Exception while parsing xml in android

I try to parse xml from this source 我尝试解析XML 这个

Following is my parsing code: 以下是我的解析代码:

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();
    }

At the line eventType = parser.next() I get the following exception: 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)

I do not find any obvious reasons as to why this happens. 我没有找到任何明显的原因来说明为什么会发生这种情况。

Any help in resolving this is much appreciated. 任何帮助解决此问题的方法,将不胜感激。

It is very likely that you don't try to parse the XML that you think. 您很可能不尝试解析您认为的XML。 Instead you seem to parse a HTML document, which is not well formed. 相反,您似乎解析了格式不正确的HTML文档。 This happens because some of the HTML tags don't require closing tags and you actually run into one of them like in the following example: 发生这种情况是因为某些HTML标记不需要关闭标记,而您实际上遇到了其中一个,如以下示例所示:

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

So please make sure that you really try to parse the XML that you intend to. 因此,请确保您确实尝试解析您想要的XML。 Either check the URL that you try to get the XML from. 检查您尝试从中获取XML的URL。 The link that you provided should actually work but maybe you have a typo in your code. 您提供的链接应该可以正常工作,但也许您的代码中有错字。

Additionally debug your code and check what's inside your InputStream. 此外,调试代码并检查InputStream中的内容。 I guess inside there's something very different from what you expect. 我想里面有一些与您期望的非常不同的东西。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM