Ho questa funzione:Tagsoup non riesce ad analizzare il documento HTML da una StringReader (java)
private Node getDOM(String str) throws SearchEngineException {
DOMResult result = new DOMResult();
try {
XMLReader reader = new Parser();
reader.setFeature(Parser.namespacesFeature, false);
reader.setFeature(Parser.namespacePrefixesFeature, false);
Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.transform(new SAXSource(reader,new InputSource(new StringReader(str))), result);
} catch (Exception ex) {
throw new SearchEngineException("NukatSearchEngine.getDom: " + ex.getMessage());
}
return result.getNode();
}
Ci vuole una stringa che contiene il documento HTML inviato dal server http, dopo una richiesta POST, ma non riesce a analizzare correttamente - Ho solo quattro nodi dell'intero documento. La stessa stringa sembra a posto - se la stampo e copypasta in un documento di testo vedo la pagina che mi aspettavo.
Quando uso una versione di overload del metodo di cui sopra:
private Node getDOM(URL url) throws SearchEngineException {
DOMResult result = new DOMResult();
try {
XMLReader reader = new Parser();
reader.setFeature(Parser.namespacesFeature, false);
reader.setFeature(Parser.namespacePrefixesFeature, false);
Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.transform(new SAXSource(reader, new InputSource(url.openStream())), result);
} catch (Exception ex) {
throw new SearchEngineException("NukatSearchEngine.getDom: " + ex.getMessage());
}
return result.getNode();
}
poi tutto funziona bene - ho un albero DOM corretta, ma ho bisogno di recuperare in qualche modo la risposta POST dal server.
Memorizzare la stringa in un file e leggerla di nuovo non funziona, ottenendo sempre gli stessi risultati.
Quale potrebbe essere il problema?