В java есть потоки для ввода/вывода.
Я смущен тем, что когда я создаю поток, это данные, которые находятся в потоке, или просто конвейер для данных?
На самом деле я пытаюсь проанализировать ответ xml, созданный из запроса на отдых, в веб-службу, которая возвращает ответ xml.
//Parse Xml
ParseXml parser=new ParseXml();
parser.parseStream(connection.getInputStream());
где соединение является объектом HttpURLConnection.
Ниже приведен источник для parseStream().
import java.io.IOException;
import java.io.InputStream;
import java.io.Reader;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.XMLReaderFactory;
public class ParseXml
{
public void parseStream(InputStream input)
{
XMLReader xmlReader;
try
{
xmlReader = (XMLReader) XMLReaderFactory.createXMLReader();
xmlReader.setContentHandler(new XmlParser());
xmlReader.parse(new InputSource(input));
}
catch (SAXException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
Я получаю исключение:
[Fatal Error] :1:1: Premature end of file.
org.xml.sax.SAXParseException: Premature end of file.
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
at xmlparsing.ParseXml.parseStream(ParseXml.java:24)
at smssend.SmsSend.restHttpPost(SmsSend.java:129)
at main.SmsApiClass.main(SmsApiClass.java:28)
parse
выполняет эту выборку данных. В вашем случае предположительно XML неправильно сформирован, а это означает, что какой-то закрывающий тег отсутствует. 12.03.2011InputStream
в конце, и это то, что вы передаете синтаксическому анализатору XML. 14.03.2011