私は構文解析しようとしており、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接続を使用しているため、ネットワークの問題が疑われます。この問題を解決する最善の方法は、このXMLファイルをwiresharkまたはTCPモニタの種類のツールを使用してキャプチャし、それが完全かどうかを確認することです。 – NiranjanBhat
@NiranjanBhat。はい、XMlは完全で有効です。私はこのXMLを直接リンクで解析しています。そのエラーは、InputStreamを使用する場合にのみ発生するようです。 – Fabii
POSTを実行しているのにデータを送信していないのはなぜですか? – EJP