如何将Jsoup文档转换为W3C文档?

时间:2013-07-23 05:57:39

标签: html-parsing jsoup apache-stanbol

我通过解析内部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);

有人可以帮我吗?

2 个答案:

答案 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对象时看到的结果 - 但这并不意味着该对象为空。我可以通过拨打getDocumentElementgetChildNodes来遍历文档。

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());
}