我通过解析内部HTML页面构建了一个Jsoup文档,
public Document newDocument(String path) throws IOException {
Document doc = null;
doc = Jsoup.connect(path).timeout(0).get();
return new HtmlDocument<Document>(doc);
}
我想将Jsoup文档转换为org.w3c.dom.Document
我为此使用了一个可用的库DOMBuilder但是在解析时我得到org.w3c.dom.Document
为null。我无法理解这个问题,尝试搜索但无法找到答案。
生成W3C DOM文档的代码:
Document jsoupDoc=factory.newDocument("http:localhost/testcases/test_2.html"));
org.w3c.dom.Document docu= DOMBuilder.jsoup2DOM(jsoupDoc);
有人可以帮我吗?
答案 0 :(得分:19)
或者,Jsoup为W3CDom类提供方法fromJsoup
。此方法将Jsoup文档转换为W3C文档。
Document jsoupDoc = ...
W3CDom w3cDom = new W3CDom();
org.w3c.dom.Document w3cDoc = w3cDom.fromJsoup(jsoupDoc);
<强>更新强>
答案 1 :(得分:6)
To retrieve a jsoup document via HTTP,拨打Jsoup.connect(...).get()
。 To load a jsoup document locally,拨打Jsoup.parse(new File("..."), "UTF-8")
。
对DomBuilder
的调用是正确的。
当你说,
我使用了一个可用的库DOMBuilder来解析这个问题 将org.w3c.dom.Document设为null。
我认为你的意思是,“我使用了一个可用的库,DOMBuilder,但是在打印结果时,我得到[#document: null]
。”至少,这是我在尝试打印w3cDoc
对象时看到的结果 - 但这并不意味着该对象为空。我可以通过拨打getDocumentElement
和getChildNodes
来遍历文档。
public static void main(String[] args) {
Document jsoupDoc = null;
try {
jsoupDoc = Jsoup.connect("http://stackoverflow.com/questions/17802445").get();
} catch (IOException e) {
e.printStackTrace();
}
org.w3c.dom.Document w3cDoc= DOMBuilder.jsoup2DOM(jsoupDoc);
Element e = w3cDoc.getDocumentElement();
NodeList childNodes = e.getChildNodes();
Node n = childNodes.item(2);
System.out.println(n.getNodeName());
}