Ver Mensaje Individual
  #1 (permalink)  
Antiguo 28/10/2009, 05:59
jonnyeus
 
Fecha de Ingreso: octubre-2009
Mensajes: 11
Antigüedad: 15 años, 2 meses
Puntos: 0
Parsear HTML a DOM Document

Hola a todos, necesito un parser para convertir un HTML (en string) a Document (org.w3c.dom.Document)

Os cuento la situación, para que lo entendáis mejor:

En un String obtengo un código html que no está bien formado (quiero decir que puede haber etiquetas que faltan, por ejemplo </p>, que antes nadie las ponía). Tengo el siguiente método para pasar un String a org.w3c.dom.Document:

Código:
public static Document String2Document(String str) throws Exception {
    DocumentBuilder builder = 
        DocumentBuilderFactory.newInstance().newDocumentBuilder();
    Document dok = builder.parse(new InputSource(new StringReader(str)));
    return dok;
}
Un caso concreto es cuando le meto el siguiente HMLT (solo pongo un trocito):

Código:
<html>
<head>
<title>Corpus arakatzailea</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" href="/klasikoak/kg.css">
<script LANGUAGE="JavaScript1.2" SRC="/klasikoak/scripts/menu.js"></SCRIPT>
</head>
<body>

.....

</body>
</html>
Al parsearlo con la función, salta una excepción, por culpa de la etiqueta </SCRIPT>, diciendo que el elemento "script" debe terminar con la etiqueta </script>:

Código:
[Fatal Error] :1:235: The element type "script" must be terminated by the matching end-tag "</script>".
org.xml.sax.SAXParseException: The element type "script" must be terminated by the matching end-tag "</script>".
	at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(Unknown Source)
	at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(Unknown Source)
	at UtilidadesXML.String2Document(UtilidadesXML.java:56)
	at HTML2Document.main(HTML2Document.java:15)
No quiero ni pensar lo que pasará con las demás etiquetas mal balanceadas.

Alguien me puede ayudar??

Gracias de antemano.