Estoy intentando escribir datos XML utilizando Stax en el que el contenido en sí es HTML¿Cómo escribo XML sin escape fuera de un CDATA
Si intento
xtw.writeStartElement("contents");
xtw.writeCharacters("<b>here</b>");
xtw.writeEndElement();
consigo este
<contents><b>here</b></contents>
Luego noto el método CDATA y cambio mi código a:
xtw.writeStartElement("contents");
xtw.writeCData("<b>here</b>");
xtw.writeEndElement();
y esta vez el resultado es
<contents><![CDATA[<b>here</b>]]></contents>
que todavía no es buena. Lo que realmente quiero es
<contents><b>here</b></contents>
Entonces, ¿hay una API XML/Biblioteca que me permite escribir texto sin formato sin estar en una sección CDATA? Hasta ahora he mirado a Stax y JDom y parece que no ofrecen esto.
Al final podría recurrir al viejo StringBuilder pero esto no sería elegante.
Actualización:
estoy de acuerdo con la mayoría de las respuestas hasta el momento. Sin embargo, en lugar de <b>here</b>
podría tener un documento HTML de 1MB que quiero incrustar en un documento XML más grande. Lo que sugieres significa que tengo que analizar este documento HTML para comprender su estructura. Me gustaría evitar esto si es posible.
Respuesta:
No es posible, de lo contrario podría crear documentos XML no válidos.
Si esto fuera posible, podría escribir demasiado fácilmente archivos XML no válidos. No es que la mayoría del HTML del mundo real (que no es XHTML) es ** no ** XML válido (demasiadas etiquetas sin cerrar y atributos sin escalar). Todo eso está bien para HTML, pero no para XML, por lo que usar CDATA es realmente lo único correcto, a menos que tu HTML sea realmente XHTML. –
@Joachim. Sí, en mi caso es XHTML. Es por eso que sé que es válido y quiero incrustarlo de inmediato sin ningún procesamiento. – kazanaki