2011-10-19 60 views
5

Tôi đang cố gắng phân tích cú pháp tệp html bình thường bằng trình phân tích SAX.Phân tích html với trình phân tích cú pháp SAX

SAXBuilder builder2 = new SAXBuilder(); 
     try { 
      Document sdoc = (Document)builder2.build(readFile); 
      NodeList nl=sdoc.getElementsByTagName("body"); 
      System.out.println("nodelist>>>>>>>>>>>"+nl.getLength()); 

     } catch (JDOMException e1) { 
      e1.printStackTrace(); 
     } 

nhưng tôi đang nhận được ngoại lệ

Open quote is expected for attribute "{1}" associated with an element type "class". 

có thể bất cứ ai xin vui lòng cho tôi biết lý do tại sao tôi đang nhận được ngoại lệ này, các tài liệu html được tạo phù hợp và nó có tất cả các thẻ mở và đóng đúng cách.

Xin cảm ơn trước.

+0

Có lý do cụ thể nào khiến bạn muốn thực hiện điều này với SAX không? – flash

+0

Không, chỉ muốn lấy nội dung cơ thể từ tệp html, Vì vậy, tôi đã sử dụng nó. Còn có những giải pháp nào nữa ko? – user972590

+1

Với SAX bạn có thể phân tích cú pháp XHTML, nhưng tôi không chắc liệu nó có thể phân tích cú pháp HTML hay không (ít nhất là hầu hết các trình phân tích cú pháp XML không). HTML không phải là một XML được định dạng tốt. –

Trả lời

2

Vui lòng xem HtmlParser. Thông thường SAX không phải là một giải pháp tốt để phân tích cú pháp html.

+2

SAX luôn là một tùy chọn tốt để phân tích cú pháp một lượng lớn dữ liệu - chẳng hạn như HTML. Hãy thử nhìn vào TagSoup khá tuyệt vời để làm điều đó! – slott

2

Nói chung, bạn không thể phân tích cú pháp HTML với một phân tích cú pháp XML:

  • thẻ phần tử HTML của không cần phải phù hợp trong mọi trường hợp. (Ví dụ: thẻ <p> không yêu cầu thẻ </p> phù hợp). Điều này sẽ gây khó tiêu thiết bị đầu cuối cho trình phân tích cú pháp XML.

  • HTML trong thế giới thực là nổi tiếng vì không tuân thủ thông số HTML, hãy để một mình tập con HTML tương thích XML.

Tuy nhiên, nếu tài liệu đầu vào của bạn là XHTML, bạn nên về mặt lý thuyết có thể sử dụng một cú pháp XML như SAX. Bạn nên thậm chí có thể xác thực tài liệu đối với lược đồ XHTML.

5

Như flash nói, bạn cần một trình phân tích cú pháp HTML, không phải là trình phân tích cú pháp XML. HTML không phải là XML.

Trình phân tích cú pháp tốt mà tôi đã sử dụng là NekoTagSoup. Neko là một trình phân tích cú pháp toàn diện; TagSoup đặc biệt nhằm mục đích để có thể phân tích bất cứ điều gì, không có vấn đề làm thế nào hình thành bệnh.

+0

Điều về TagSoup là, dựa trên SAX, nó nhanh như chớp và nó giải quyết tất cả các cuộn cảm cơ bản SAX cơ bản trên bao gồm < và >. Nó dễ dàng cài đặt như SAX; các phương thức xử lý chỉ là những phương thức tương tự - không có đường cong học tập nào ngoài SAX mà bạn đã biết. –

Các vấn đề liên quan