Android的XML解析异常一下子

问题描述:

我的代码是昨天做工精细,但我今天再次启动,并正在错误Android的XML解析异常一下子

org.apache.harmony.xml.ExpatParser$ParseException: At line 1, column 0: not well-formed (invalid token) 

存在问题的XML没有任何时髦的人物。它存储在一个名为“xml”的字符串变量中。公平地说,我真的不知道该如何处理这个问题,而只是开始一些教程,但这是我的尝试。

out = new PrintWriter(mySocket.getOutputStream(), true); 
BufferedReader br = new BufferedReader(new InputStreamReader(mySocket.getInputStream(), "US-ASCII")); 
InputStream is = mySocket.getInputStream(); 

... 
String xml = the stuff that was read in with br.read(); 
... 

SAXParserFactory saxPF = SAXParserFactory.newInstance(); 
SAXParser saxP = saxPF.newSAXParser(); 
XMLReader xmlR = saxP.getXMLReader(); 

DataHandler myDataHandler = new DataHandler(); 
xmlR.setContentHandler(myDataHandler); 
xmlR.parse(new InputSource(new StringReader(xml))); 
myData = myDataHandler.getData(); 

我哪里出错了?

更新:XML与

<?xml version="1.0" standalone="yes"?> 

启动,因此似乎并不认为“行1,列0”实际上有什么错。

更新2:我发现is.available()返回0 ....我如何解决这个问题?

+2

向我们展示'xml'的内容。 (好吧,至少它的开始。) – 2012-07-10 14:37:14

+0

我强烈怀疑你没有得到任何回应(或)回应的一部分。我会建议记录响应。 – kosa 2012-07-10 14:37:52

+0

@GrahamBorland更新时间你需要看到更多的XML? – Kalina 2012-07-10 14:47:47

我不确定最终会出现什么问题,但是我改变了几件事情,并让它有所作为。这是我改变了:

我改变

BufferedReader br = new BufferedReader(new InputStreamReader(mySocket.getInputStream(), "US-ASCII")); 
InputStream is = mySocket.getInputStream(); 

BufferedInputStream in = new BufferedInputStream(mySocket.getInputStream()); 

而且我并没有包括在这个原来的问题(这是的“...”部分),但我摆脱了这种状况

if(in.available()>0) 

因为它返回0,即使read()只是在没有它的情况下找到它。这可能只是一个暂时的黑客,但我需要弄清楚为什么它返回0并找到合法的修复程序...

你需要确保你指定你的编码方法。尝试:

<?xml version="1.0" encoding="utf-8" standalone="yes"?> 

您总是需要定义如何编码数据,否则您将遇到问题。您还可能要更改此设置:

BufferedReader br = new BufferedReader(new InputStreamReader(mySocket.getInputStream(), "US-ASCII")); 

这样:

BufferedReader br = new BufferedReader(new InputStreamReader(mySocket.getInputStream(), "utf-8")); 

这里是一个伟大的文章,谈到有关规定,你是如何编码数据的重要性:

http://www.joelonsoftware.com/articles/Unicode.html

希望这有助于!

+0

我已经有了第一行。我也改变了br线路,并没有帮助。不过谢谢。 – Kalina 2012-07-10 16:25:10

+0

你有'encoding =“utf-8”'吗?好像你只有:''你必须在所有的xml文件中都有'encoding =“utf-8”''。否则,你会遇到问题。你还可以发布整个XML文件吗? – BlackHatSamurai 2012-07-10 16:27:09