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().