Search code examples
javaxmlxml-parsingxerces

Do I need to close Input Stream manually?


I'm using Xerces library for parsing XML. Here is the code snippet for parsing:

Document doc = builder.parse(new InputSource(new StringReader(someXMLString)));

Do I need to close the InputStream in InputSource manually or will the parse method handle it?


Solution

  • It seems there is nothing in DocumentBuilder API about it. We can test it as

    InputStream is = new FileInputStream("test.xml") {
        @Override
        public void close() throws IOException {
            System.out.println("close");
            super.close();
        }
    };
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    DocumentBuilder documentBuilder = dbf.newDocumentBuilder();
    documentBuilder.parse(is);
    

    it prints close. But since there's nothing in API about it, this behaviour is not guaranteed.