2012-03-14 191 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