2012-03-14 162 views
0

的SAXParseException,同時IAM試圖解析XML unsing DOM解析器錯誤解析XML

這裏使用的代碼

public static getAlertsFromXML(InputStream strAlerts) { 
           DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
       DocumentBuilder db = dbf.newDocumentBuilder(); 
       InputSource is = new InputSource(strAlerts);   
       is.setEncoding("UTF-8"); 
       Document doc =db.parse(is); 
} 

org.xml.sax.SAXParseException存在的運行代碼。

XML是

<?xml version="1.0" encoding="UTF-8"?> 
-<seloger result="1" url="http://wshp.seloger.com/getalerts.xml?printerid=3Gs8rsDHrclGqD1Hrr1p08dr2" version="1.0"> 
<!-- ID3x v4.60 (387) - X29 - 00.056.330 - base - 14/03/2012 09:56:09 - getalerts.xml --> 
-<listalerts> -<alert> <alertId>10049086</alertId> <description>locations d'appartements ou de maisons situées dans le 75, ayant une surface supérieure à 567 m², pour un loyer inférieur à 100 000 000 €/mois, triées par prix.</description> <creationDate>2011-10-13T11:16:00</creationDate> <queryString>cp=75&idqfix=1&idtt=1&idtypebien=1,2&px_loyerbtw=NAN%2f100000000&surfacebtw=567%2fNAN&tri=</queryString> </alert> -<alert> <alertId>9348308</alertId> <description>ventes situées à Caen (Calvados), à Cambes (Lot-et-Garonne), à Paris 1er, à Paris 2ème, à Paris 3ème, à Paris 4ème, à Paris 5ème, à Paris 6ème, à Paris 7ème, à Paris 8ème, à Paris 9ème, à Paris 10ème, à Paris 11ème, à Paris 12ème, à Paris 13ème, à Paris 14ème, à Paris 15ème, à Paris 16ème, à Paris 17ème, à Paris 18ème, à Paris 19ème ou à Paris 20ème, ayant une surface inférieure à 1 000 m², triées par prix.</description> <creationDate>2011-06-27T07:42:00</creationDate> <queryString>ci=140118,470047,750101,750102,750103,750104,750105,750106,750107,750108,750109,750110,750111,750112,750113,750114,750115,750116,750117,750118,750119,750120&fakeci=750056&idqfix=1&idtt=2&idtypebien=all&nb_chambres=all&nb_pieces=all&pxbtw=NaN%2fNaN&surfacebtw=NaN%2f1000&tri=d_dt_crea</queryString> </alert> -<alert> <alertId>9337215</alertId> <description>ventes situées à Paris 1er, à Paris 2ème, à Paris 3ème, à Paris 4ème, à Paris 5ème, à Paris 6ème, à Paris 7ème, à Paris 8ème, à Paris 9ème, à Paris 10ème, à Paris 11ème, à Paris 12ème, à Paris 13ème, à Paris 14ème, à Paris 15ème, à Paris 16ème, à Paris 17ème, à Paris 18ème, à Paris 19ème ou à Paris 20ème, ayant une surface inférieure à 1 000 m², pour un prix compris entre 50 et 1 000 €, triées par prix.</description> <creationDate>2011-06-24T13:40:00</creationDate> <queryString>ci=750101,750102,750103,750104,750105,750106,750107,750108,750109,750110,750111,750112,750113,750114,750115,750116,750117,750118,750119,750120&fakeci=750056&idqfix=1&idtt=2&idtypebien=all&nb_chambres=all&nb_pieces=all&pxbtw=50%2f1000&surfacebtw=NaN%2f1000&tri=d_dt_crea</queryString> </alert> </listalerts> </seloger> 
+2

您的XML有效嗎? – 2012-03-14 08:40:01

+0

你能告訴我們你正在嘗試解析的XML嗎? – nfechner 2012-03-14 08:40:04

+0

是的Xml是有效的......因爲當我將函數參數strAlerts改變爲INputStream時,發生了以下異常。我只需要將參數傳遞爲InputStream – chinchu 2012-03-14 08:42:22

回答

0

的符號在XML中是保留字符; <marker>Bob & Mary Johnson</marker>是無效的XML。您必須將其轉義爲&或將其包裝以便將其從XML解析器中隱藏,例如<marker><![CDATA[Bob & Mary Johnson]]></marker>。請參閱List of XML and HTML character entity

+0

Xml是有效的...因爲當我將函數參數strAlerts更改爲INputStream時,出現以下異常。我需要將參數僅作爲InputStream使用 – chinchu 2012-03-14 09:25:23

+0

您的意思是 cp = 75&idqfix = 1&idtt = 1&idtypebien = 1,2&px_loyerbtw = NAN% 2f100000000&surfacebtw = 567%2fNAN&tri =是否有效?您可以使用任何xml工具(Notepad ++等)或在線http://www.xmlvalidation.com/ – 2012-03-14 09:39:06

+0

從您的代碼驗證此片段。我可以知道downvote的原因嗎?請添加downvote的原因作爲評論。 – 2012-03-15 06:17:32

0

你不能在一個XML流的&除非你逃避它

+0

我同意。 xml無效。 – 2012-03-14 09:16:16