Как преобразовать документ Jsoup в документ W3C?
Я создал документ Jsoup путем анализа внутренней HTML-страницы,
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);
Может кто-нибудь, пожалуйста, помогите мне в этом?
2 ответа
Чтобы получить документ jsoup через HTTP, позвоните Jsoup.connect(...).get()
, Чтобы загрузить документ jsoup локально, позвоните Jsoup.parse(new File("..."), "UTF-8")
,
Призыв к DomBuilder
верно.
Когда ты сказал,
Я использовал для этого доступную библиотеку DOMBuilder, но при разборе я получаю значение org.w3c.dom.Document как ноль.
Я думаю, вы имеете в виду: "Я использовал для этого доступную библиотеку DOMBuilder, но при печати результата я получаю [#document: null]
"По крайней мере, это был результат, который я увидел, когда попытался напечатать w3cDoc
объект - но это не значит, что объект является нулевым. Я смог пройтись по документу, позвонив getDocumentElement
а также getChildNodes
,
public static void main(String[] args) {
Document jsoupDoc = null;
try {
jsoupDoc = Jsoup.connect("http://stackru.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 предоставляет класс W3CDom с методом fromJsoup
, Этот метод преобразует документ Jsoup в документ W3C.
Document jsoupDoc = ...
W3CDom w3cDom = new W3CDom();
org.w3c.dom.Document w3cDoc = w3cDom.fromJsoup(jsoupDoc);
ОБНОВИТЬ:
- С 1.10.3 W3CDom больше не является экспериментальным.
- До Jsoup 1.10.2 класс W3CDom все еще экспериментален.