如何将 Jsoup 文档转换为 W3C 文档?
Posted
技术标签:
【中文标题】如何将 Jsoup 文档转换为 W3C 文档?【英文标题】:How to convert a Jsoup Document to a W3C Document? 【发布时间】:2013-07-22 01:34:37 【问题描述】:我通过解析内部 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
为空。我无法理解问题,尝试搜索但找不到任何答案。
生成 W3C DOM 文档的代码:
Document jsoupDoc=factory.newDocument("http:localhost/testcases/test_2.html"));
org.w3c.dom.Document docu= DOMBuilder.jsoup2DOM(jsoupDoc);
谁能帮我解决这个问题?
【问题讨论】:
svn.apache.org/repos/asf/stanbol/trunk/enhancement-engines/… 【参考方案1】:我认为到目前为止(2022 年)发生了很多更新。
org.w3c.dom.Document document = W3CDom.convert(jsoupDoc);
这对我有用。
【讨论】:
【参考方案2】:另外,Jsoup 为 W3CDom 类提供 fromJsoup
方法。此方法将 Jsoup 文档转换为 W3C 文档。
Document jsoupDoc = ...
W3CDom w3cDom = new W3CDom();
org.w3c.dom.Document w3cDoc = w3cDom.fromJsoup(jsoupDoc);
更新:
自 1.10.3 起 W3CDom 为no longer experimental。 Jsoup 1.10.2 之前 W3CDom 类仍处于试验阶段。【讨论】:
【参考方案3】: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://***.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());
【讨论】:
以上是关于如何将 Jsoup 文档转换为 W3C 文档?的主要内容,如果未能解决你的问题,请参考以下文章
如何将文档从 JSOUP 传递到 webview 并运行脚本
Java 使用 jacob 将 word 文档转换为 pdf 文件