1

この方法でネットからXMLファイルを解析しようとすると:

URL url = new URL("http://www.nbp.pl/kursy/xml/a074z120416.xml");
URLConnection uc = url.openConnection();
saxParser.parse(uc.getInputStream(), handler);

ファイルの早期終了例外がスローされています。

スタックトレース:

org.xml.sax.SAXParseException: Premature end of file.
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
at javax.xml.parsers.SAXParser.parse(Unknown Source)
at javax.xml.parsers.SAXParser.parse(Unknown Source)
at com.pmajcher.xmltest.ReadXMLFile.main(ReadXMLFile.java:142)

しかし、最初にそのxmlをローカルファイルに保存してから解析しようとすると、すべて問題ありません。

URL url = new URL("http://www.nbp.pl/kursy/xml/a074z120416.xml");
URLConnection uc = url.openConnection();
InputStreamReader input = new InputStreamReader(uc.getInputStream());
BufferedReader in = new BufferedReader(input);
File file = new File("temp.xml");

if(!file.exists()){
    file.createNewFile();
}

PrintWriter out = new PrintWriter(file);
String inputLine;

while ((inputLine = in.readLine()) != null) {
    out.print(inputLine);
}
out.close();
saxParser.parse("temp.xml", handler);

ネットからxmlを解析しようとする方法の何が問題になっていますか?

4

1 に答える 1

3

質問に書かれたコードはうまく機能します

URL url = new URL("http://www.nbp.pl/kursy/xml/a074z120416.xml");
URLConnection uc = url.openConnection();
saxParser.parse(uc.getInputStream(), handler);

ここでは問題は見当たりません。たぶん、ファイルが最初に変更されたときにそれを試してみて、完全ではなかったとき。

しかし今、私はそれが機能することをあなたに確認することができます。やってみる。

于 2012-04-16T18:08:04.617 に答える