java.io.InputStream
を返すことからXHTMLドキュメントをロードするこのメソッドがありますorg.w3c.dom.Document
。
private Document loadDocFrom(InputStream is) throws SAXException,
IOException, ParserConfigurationException {
DocumentBuilderFactory domFactory = DocumentBuilderFactory
.newInstance();
domFactory.setNamespaceAware(true); // never forget this
DocumentBuilder builder = domFactory.newDocumentBuilder();
Document doc = builder.parse(is);
is.close();
return doc;
}
この方法は機能します。いくつかのXHTMLドキュメント(例http://pastebin.com/L2kHwggU
)とXHTMLWebサイトでテストしました。
ただし、このhttp://pastebin.com/v675yWSJやのようなWebサイトなどの一部のドキュメントwww.w3.org
では、で無限ループに入りますDocument doc = builder.parse(is);
。
編集:
@Michael Kayは問題を発見しましたが、私は彼の解決策を待っています。
他の可能な解決策の1つは、DTDを無視することです。
domFactory.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false)
ご協力ありがとうございました。