2012-07-10 47 views
0

我的代碼是昨天做工精細,但我今天再次啓動,並正在錯誤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

回答

0

我不確定最終會出現什麼問題,但是我改變了幾件事情,並讓它有所作爲。這是我改變了:

我改變

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並找到合法的修復程序...

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 version =「1.0」standalone =「yes」?>'你必須在所有的xml文件中都有'encoding =「utf-8」''。否則,你會遇到問題。你還可以發佈整個XML文件嗎? – BlackHatSamurai 2012-07-10 16:27:09