解析错误异常

时间:2010-09-22 14:49:27

标签: xml

我正在分析天气数据Feed并且它适用于某些位置,但在某些位置出现此消息时出错:

  

09-22 10:40:33.364:WARN / System.err(3347):org.apache.harmony.xml.ExpatParser $ ParseException:在第465行,第29列:格式不正确(无效令牌)

任何想法可能会发生什么?

以下是xml的片段:

                <hour time="11 AM">
                    <url>http://www.....</url>
                    <obsdate>9/22/2010</obsdate>
                    <txtshort>Parcialmente soleado</txtshort>
                    <weathericon>03</weathericon>
                    <temperature>26</temperature>
                    <feelslike>29</feelslike>
                </hour>

                <hour time="12 PM">
                    <url>http://www.....</url>
                    <obsdate>9/22/2010</obsdate>
                    <txtshort>Parcialmente soleado</txtshort>
                    <weathericon>03</weathericon>
                    <temperature>26</temperature>
                    <feelslike>29</feelslike>
                </hour>

第465行是带有12pm属性值的'hour'标记。我已经记录了解析代码,它正在读取xml,直到它到达这一行。

3 个答案:

答案 0 :(得分:1)

错误表明它发生在第29列,而您所说的行是包含错误的行只有18个字符长。很可能,这意味着两件事之一:该行包含我们看不到的非打印字符,其中一个是XML中不允许的少数几个字符之一,或者是某处出现错误,错误发生在下一行 - 可能是您编辑过的网址。

答案 1 :(得分:1)

实际上,在解析XML文档时,这实际上是一个无法识别的字符。我为解决这个问题所做的是包括这样的编码类型:(选择与XML文档匹配的编码)

InputSource inputSource = new InputSource(is);
//inputSource.setEncoding("iso-8859-1");
inputSource.setEncoding("utf-8");

答案 2 :(得分:0)

在尝试阅读任何xml文件之前,始终建议检查您尝试阅读的xml文档的格式是否正确。在这种情况下,尝试在解析之前在天气数据源中获取xml提要周围的格式良好的条件。使用C#.Net可以按如下方式完成: -

XmlDocument doc = new XmlDocument();
doc.loadxml(rawXMLcontent);

如果失败,则转到异常块。您可以相应地处理异常块中的Feed。这可以确保您永远不会得到任何解析异常。我希望它有所帮助。