Allora, grazie per la precisazione sull'uso di InputStream o Reader, non la conoscevo.
Per quanto riguarda il codice, io uso un ByteArrayInputStream

codice:
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(testoXml), "UTF-8"));
	    	 
int c;
while ((c = reader.read()) != -1) sb.append((char) c);
	   
String contenuto8859 = trasformFileXml(sb.toString(), XSL_UTF82ISO88);
	    
ByteArrayInputStream is = new  ByteArrayInputStream(contenuto8859.getBytes());	    
	     
Document document = null;
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
try {
		DocumentBuilder db = dbf.newDocumentBuilder();
		document = db.parse(is);
}catch(ParserConfigurationException pce) {
		pce.printStackTrace();
}catch(SAXException se) {
		se.printStackTrace();
}catch(IOException ioe) {
		ioe.printStackTrace();
}
La stringa contenuto8859 è frutto di una trasformazione xsl che trasforma il contenuto del file d'origine UTF-8 in ISO-8859-1.
Per sviluppare uso Eclipse e ho settato il workspace per utilizzare l'ISO-8859-1, quindi non l'ho specificato nel .getBytes().