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?
Given that you've got no external resources - just a StringReader
- you don't need to close it. I would do so anyway though... then if you ever change the code to use a different input, you won't accidentally have a resource leak.
(For just throwaway code, I'd leave it - but be aware that if you're not careful, throwaway code has a habit of living longer than expected.)
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With