Sto cercando di scrivere i dati XML utilizzando Stax dove il contenuto stesso è HTMLCome faccio a scrivere XML senza caratteri di escape al di fuori di un CDATA
Se provo
xtw.writeStartElement("contents");
xtw.writeCharacters("<b>here</b>");
xtw.writeEndElement();
ottengo questo
<contents><b>here</b></contents>
Quindi noto il metodo CDATA e cambio il mio codice in:
xtw.writeStartElement("contents");
xtw.writeCData("<b>here</b>");
xtw.writeEndElement();
e questa volta il risultato è
<contents><![CDATA[<b>here</b>]]></contents>
che non è ancora buono. Quello che davvero voglio è
<contents><b>here</b></contents>
Quindi c'è un API XML/libreria che mi permette di scrivere testo grezzo senza essere in una sezione CDATA? Finora ho guardato Stax e JDom e loro non sembrano offrire questo.
Alla fine potrei ricorrere al buon vecchio StringBuilder ma questo non sarebbe elegante.
Aggiornamento:
Sono d'accordo con la maggior parte delle risposte finora. Tuttavia, invece di <b>here</b>
, potrei avere un documento HTML da 1 MB che voglio incorporare in un documento XML più grande. Quello che suggerisci significa che devo analizzare questo documento HTML per comprenderne la struttura. Vorrei evitare questo se possibile.
Risposta:
Non è possibile, altrimenti si potrebbe creare documenti XML non validi.
Se ciò fosse possibile, è possibile scrivere troppo facilmente file XML non validi. Non che la maggior parte del mondo reale HTML (che non sia XHTML) sia ** non ** XML valido (troppi tag non chiusi e attributi senza escape). Tutto ciò va bene per HTML, ma non è permesso per XML, quindi usare CDATA è davvero l'unica cosa corretta da fare, a meno che il tuo HTML sia in realtà XHTML. –
@ Joachim. Sì nel mio caso è XHTML. Questo è il motivo per cui so che è valido e voglio incorporarlo subito senza alcuna elaborazione. – kazanaki