2010-09-22 83 views
1

我解析氣象數據饋送,並將其與某些位置,但出現了錯誤此消息對一些地方的工作原理:解析錯誤異常

十月9日至22日: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與12點屬性值的「小時」標籤。我已經記錄瞭解析代碼,它正在讀取xml,直到它到達這一行。

+1

如何發佈您的實際解析代碼和原始XML的一個片段,真實失敗? – ctacke 2010-09-22 14:52:14

+0

我不相信它是我的代碼,它適用於某些訂閱源,而不是來自相同來源的其他位置的其他訂閱者。 – taraloca 2010-09-22 15:04:32

+0

@taraloca:這是公共天氣服務嗎?我們可以看看你得到的原始文件嗎? – Bobby 2010-09-22 15:46:08

回答

1

這實際上是解析XML文檔時無法識別的字符。我做了什麼來解決,這是包括編碼類型是這樣的:(選擇符合您的XML文檔的編碼)

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

錯誤表示它發生在第29列,並且您所說的行是包含錯誤的行只有18個字符長。在很可能的情況下,這意味着兩件事之一:或者該行包含我們看不到的非打印字符,其中之一是XML中不允許使用的一小部分字符之一,某處出現錯誤並且錯誤發生在下一行 - 可能位於您已編輯的URL中。

+0

這是不正確的,在我的編輯(爲了可讀性)之前,該行長36個字符,第29個字符是1. – Bobby 2010-09-23 11:48:14

+0

是第28個字符'&'? – Quentin 2010-09-23 11:54:03

0

在嘗試讀取任何xml文件之前,總是建議檢查您嘗試讀取的xml文檔的格式正確。在這種情況下,請嘗試在解析天氣數據饋送時從xml Feed中獲取格式良好的條件。使用C#.Net可以這樣做,如下所示: -

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

如果失敗它將轉到異常塊。您可以相應地在異常塊中處理Feed。這保證你永遠不會得到任何解析異常。我希望它有幫助。

+0

我認爲如果仔細查看錯誤,您會發現它正在被XML解析器拋出 - 簡言之,OP已經在執行完全符合您的建議的格式良好檢查。 – 2010-09-23 16:55:53

+0

@Robert是的,我確實發現錯誤與屬性值有關,它很容易繞過格式良好的條件。 – 2010-09-23 17:07:57

+0

輕鬆繞過?錯誤消息*表示文檔格式不正確。 – 2010-09-23 17:20:11