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.