StringReader를 (자바)에서 HTML 문서를 구문 분석하는 데 실패 : 그것은 POST 요청 후 HTTP 서버에 의해 전송 된 HTML 문서를 포함하는 문자열을 사용Tagsoup 내가이 기능이
을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();
}
하지만 구문 분석에 실패 제대로 - 전체 문서에서 네 개의 노드 만 얻습니다. 문자열 자체는 괜찮아 보입니다. 인쇄하고 텍스트 문서로 복사하면 예상 한 페이지가 표시됩니다.
나는 위의 방법의 오버로드 된 버전을 사용하는 경우 :
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 응답을 검색해야합니다.
문자열을 파일에 저장하고 다시 읽지 않아도 작동하지 않지만 여전히 동일한 결과가 나타납니다.
무엇이 문제 일 수 있습니까?