私はこの機能を持っています:
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();
}
POSTリクエストの後にhttpサーバーから送信されたhtmlドキュメントを含む文字列を取りますが、適切に解析できません.ドキュメント全体から4つのノードしか得られません. 文字列自体は問題ないように見えます。印刷してテキスト ドキュメントにコピーすると、期待どおりのページが表示されます。
上記のメソッドのオーバーロードされたバージョンを使用すると:
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();
}
その後、すべてが正常に機能します-適切なDOMツリーを取得しますが、サーバーからPOST回答を何らかの方法で取得する必要があります.
文字列をファイルに保存して読み戻すことはできません - それでも同じ結果が得られます。
何が問題なのですか?