JDOM 1.1: trattino non è un commento carattere valido
-
26-09-2019 - |
Domanda
sto usando tagsoup per pulire un po 'HTML Sto raschiando da Internet, e sto ottenendo il seguente errore durante l'analisi attraverso le pagine con i commenti:
The data "- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - " is not legal for a JDOM comment: Comment data cannot start with a hyphen.
sto usando JDOM 1.1, ed ecco il codice che fa le pulizie attuale:
SAXBuilder builder = new org.jdom.input.SAXBuilder("org.ccil.cowan.tagsoup.Parser"); // build
// Don't check the doctype! At our usage rate, we'll get 503 responses
// from the w3.
builder.setEntityResolver(dummyEntityResolver);
Reader in = new StringReader(str);
org.jdom.Document doc = builder.build(in);
String cleanXmlDoc = new org.jdom.output.XMLOutputter().outputString(doc);
Qualche idea di cosa sta andando male, o come risolvere questo problema? Ho bisogno di essere in grado di analizzare le pagine con lunghe stringhe di commento di <!--------- data ------------>
Soluzione
XML / HTML / SGML commento inizia con --
, si conclude con --
e non contiene --
. Una dichiarazione commento contiene zero o più commenti.
La stringa esempio può essere riformattato come:
<!----
----
- data
----
----
---->
Come si può vedere, - data
non è un commento valido e quindi il documento non è valido HTML. Nel vostro caso specifico si può probabilmente risolvere il problema sostituendo la normale /<?!--.*?-->/
espressione con la stringa vuota, ma essere consapevoli che questo cambiamento potrebbe anche rompere alcuni documenti validi.