Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to convert InputStream to InputSource?

ALL,

I wrote a simple SAX XML parser. It works and I was testing it with local XML file. Here is my code:

SAXParserFactory spf = SAXParserFactory.newInstance();
XMLParser xmlparser = null;
try
{
    SAXParser parser = spf.newSAXParser();
    XMLReader reader = parser.getXMLReader();
    xmlparser = new XMLParser();
    reader.setContentHandler( xmlparser );
    reader.parse( new InputSource( getResources().openRawResource( R.raw.categories ) ) );

Now I need to read this XML file from the website. The code I'm trying is:

public InputStream getXMLFile()
{
    URL url = new URL("http://example.com/test.php?param=0");
    InputStream stream = url.openStream();
    Document doc = docBuilder.parse(stream);
}
reader.parse( new Communicator().getXMLFile() );

I'm getting compiler error

"The method parse(InputSource) is not applicable for the argument (InputStream)".

I need help figuring out what do I need.

Thank you.

like image 486
Igor Avatar asked Jun 14 '13 23:06

Igor


1 Answers

While I hate to sound obvious, is there any reason you're not using this constructor?

InputSource source = new InputSource(stream);
Document doc = docBuilder.parse(source);

Note that that's very similar to what you're doing in the first section of code. After all, openRawResource returns an InputStream as well...

like image 92
Jon Skeet Avatar answered Nov 04 '22 11:11

Jon Skeet