我試圖解析和XML response
,但我失敗了。我原本以爲 ,xml
只是沒有被回覆,所以我製作了下面的代碼,直接鏈接到我的xml
在線文件。我可以打印XML
進行屏幕顯示,沒有任何問題。但是,當我打電話給我的解析方法時,我收到文件過早結束。爲什麼我得到這個錯誤文件過早結束?
如果我通過直接的URL它的工作原理:
- builder.parse( 「」);
但是當我通過一個InputStream失敗:
builder.parse(connection.getInputStream());
try { URL url = new URL(xml); URLConnection uc = url.openConnection(); HttpURLConnection connection = (HttpURLConnection)uc; connection.setDoInput(true); connection.setDoOutput(true); InputStream instream; InputSource source; //get XML from InputStream if(connection.getResponseCode()>= 200){ connection.connect(); instream = connection.getInputStream(); parseDoc(instream); } else{ instream = connection.getErrorStream(); } } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ParserConfigurationException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SAXException e) { // TODO Auto-generated catch block e.printStackTrace(); } static void parseDoc(InputStream instream) throws ParserConfigurationException, SAXException, IOException{ BufferedReader buff_read = new BufferedReader(new InputStreamReader(instream,"UTF-8")); String inputLine = null; while((inputLine = buff_read.readLine())!= null){ System.out.println(inputLine); } DocumentBuilderFactory factory =DocumentBuilderFactory.newInstance(); factory.isIgnoringElementContentWhitespace(); DocumentBuilder builder = factory.newDocumentBuilder(); Document doc = builder.parse(instream); }
我得到的錯誤:
[Fatal Error] :1:1: Premature end of file.
org.xml.sax.SAXParseException: Premature end of file.
at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(Unknown Source)
at javax.xml.parsers.DocumentBuilder.parse(Unknown Source)
at com.ameba.api.network.MainApp.parseDoc(MainApp.java:78)
at com.ameba.api.network.MainApp.main(MainApp.java:41)
你有XML文件,你正試圖解析。文件過早結束表示你的XML文件不完整,因爲你在這裏使用URL連接,我懷疑網絡問題。解決此問題的最佳方法是使用wireshark或TCP監視器類型的工具捕獲此XML文件,然後檢查它是否完整 – NiranjanBhat 2012-04-05 04:48:45
@NiranjanBhat。是的,XMl是完整且有效的。我有一個直接的鏈接解析這個XML。它似乎只有在使用InputStream時纔會出現錯誤。 – Fabii 2012-04-05 04:56:49
你爲什麼要做POST但不發送任何數據? – EJP 2017-10-11 00:36:48