मैं इस समारोह है विफल रहता है:Tagsoup एक StringReader (जावा) से एचटीएमएल दस्तावेज़ को पार्स करने
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();
}
यह एक स्ट्रिंग है कि एचटीएमएल दस्तावेज़ एक पोस्ट अनुरोध के बाद http सर्वर द्वारा भेजे शामिल लेता है, लेकिन पार्स करने के लिए विफल रहता है यह ठीक से - मैं केवल पूरे दस्तावेज़ से चार नोड्स की तरह मिलता है। स्ट्रिंग स्वयं ठीक दिखती है - अगर मैं इसे प्रिंट करता हूं और उसे एक टेक्स्ट दस्तावेज़ में कॉपी करता हूं तो मुझे वह पृष्ठ दिखाई देता है जो मुझे अपेक्षित था।
जब मैं उपरोक्त विधि का एक अतिभारित संस्करण का उपयोग करें:
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();
}
तो सब कुछ ठीक काम करता है - मैं एक उचित डोम पेड़ मिलता है, लेकिन मैं किसी भी तरह सर्वर से पोस्ट जवाब को पुनः प्राप्त करने की जरूरत है।
फ़ाइल में स्ट्रिंग को संग्रहीत करना और इसे वापस पढ़ना काम नहीं करता है - अभी भी वही परिणाम प्राप्त हो रहा है।
समस्या क्या हो सकती है?