2013-07-23 35 views
6

Tôi đã xây dựng một tài liệu Jsoup bằng cách phân tích một trang HTML trong nhà,Làm cách nào để chuyển đổi Tài liệu Jsoup sang Tài liệu W3C?

public Document newDocument(String path) throws IOException { 

    Document doc = null; 
    doc = Jsoup.connect(path).timeout(0).get(); 
      return new HtmlDocument<Document>(doc); 
} 

tôi muốn chuyển đổi tài liệu Jsoup để org.w3c.dom.Document của tôi, tôi đã sử dụng một thư viện có sẵn DOMBuilder cho điều này nhưng khi phân tích cú pháp tôi nhận được org.w3c.dom.Document là null. Tôi không thể hiểu được sự cố, đã thử tìm kiếm nhưng không thể tìm thấy câu trả lời nào.

mã để tạo W3C DOM Document:

Document jsoupDoc=factory.newDocument("http:localhost/testcases/test_2.html")); 
org.w3c.dom.Document docu= DOMBuilder.jsoup2DOM(jsoupDoc); 

bất cứ ai có thể vui lòng giúp tôi về vấn đề này?

+0

http://svn.apache.org/repos/asf/stanbol/trunk/enhancement-engines/htmlextractor/src/main/java/org/apache/stanbol/enhancer/engines/htmlextractor/impl/DOMBuilder .java –

Trả lời

6

To retrieve a jsoup document via HTTP, gọi điện đến Jsoup.connect(...).get(). To load a jsoup document locally, gọi điện đến Jsoup.parse(new File("..."), "UTF-8").

Cuộc gọi đến DomBuilder là chính xác.

Khi bạn nói,

Tôi đã sử dụng một DOMBuilder thư viện có sẵn cho việc này nhưng khi phân tích cú pháp tôi được org.w3c.dom.Document như null.

Tôi nghĩ bạn có nghĩa là "Tôi đã sử dụng thư viện có sẵn, DOMBuilder, cho điều này nhưng khi in kết quả, tôi nhận được [#document: null]". Ít nhất, đó là kết quả tôi thấy khi tôi cố gắng in đối tượng w3cDoc - nhưng điều đó không có nghĩa là đối tượng là null. Tôi đã có thể duyệt qua tài liệu bằng cách thực hiện các cuộc gọi đến 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()); 
} 
13

Hoặc, Jsoup cung cấp lớp W3CDom theo phương pháp fromJsoup. Phương thức này biến đổi một tài liệu Jsoup thành một tài liệu W3C.

Document jsoupDoc = ... 
W3CDom w3cDom = new W3CDom(); 
org.w3c.dom.Document w3cDoc = w3cDom.fromJsoup(jsoupDoc); 

UPDATE:

  • Kể từ 1.10.3 W3CDom là no longer experimental.
  • Tối đa Jsoup 1.10.2 Lớp W3CDom vẫn đang được thử nghiệm.
Các vấn đề liên quan