2011-10-19 31 views
5

Estoy tratando de analizar el archivo html normal usando el analizador SAX.Analizando html con el analizador 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(); 
     } 

pero yo estoy haciendo la excepción

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

puede alguien decirme por qué estoy recibiendo esta excepción, el documento HTML está bien formado y tiene todas las etiquetas de apertura y cierre correctamente.

Gracias de antemano.

+0

¿Hay alguna razón específica por la que desee hacer esto con SAX? – flash

+0

No, solo quiero buscar el contenido del cuerpo del archivo html, así que lo usé. hay alguna otra solucion? – user972590

+1

Con SAX puedes analizar XHTML, pero no estoy seguro si también puede analizar HTML (al menos la mayoría de los analizadores XML no). HTML no tiene que ser un XML bien formado. –

Respuesta

2

Por favor, eche un vistazo a HtmlParser. Normalmente, SAX no es una buena solución para analizar html.

+2

SAX es siempre una buena opción para analizar grandes cantidades de datos, como HTML. Prueba mirar TagSoup, que es bastante increíble para hacer eso! – slott

2

En términos generales, no se puede analizar HTML con un analizador XML: No se requieren

  • etiquetas de elementos de HTML para que coincida en todos los casos. (Por ejemplo, una etiqueta <p> no requiere una etiqueta coincidente </p>). Esto causará indigestión terminal para un analizador XML.

  • HTML del mundo real es notorio por no cumplir con las especificaciones de HTML, y mucho menos un subconjunto de HTML compatible con XML.

Sin embargo, si su documento de entrada es XHTML, debería, en teoría, será capaz de utilizar un analizador XML como SAX. Usted debería incluso ser capaz de validar el documento contra el esquema XHTML.

5

Como dice el flash, necesita un analizador HTML, no un analizador XML. HTML no es XML

Los analizadores buenos que he usado son Neko y TagSoup. Neko es un buen analizador general; TagSoup específicamente pretende ser capaz de analizar cualquier cosa, sin importar cuán mal formada.

+0

Lo que pasa con TagSoup es que, basado en SAX, es rapidísimo y resuelve todas las cosas básicas de SAX que incluyen <y>. Es tan fácil de configurar como SAX; los métodos del controlador son exactamente los mismos: no hay una curva de aprendizaje más allá del SAX que usted ya conoce. –