我正在分析天气数据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,直到它到达这一行。
答案 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。这可以确保您永远不会得到任何解析异常。我希望它有所帮助。