próbuję napisać danych XML za pomocą Stax gdzie sama treść jest HTMLJak napisać Niecytowany XML zewnątrz z CDATA
Gdy próbuję
xtw.writeStartElement("contents");
xtw.writeCharacters("<b>here</b>");
xtw.writeEndElement();
otrzymuję ten
<contents><b>here</b></contents>
Następnie zauważam metodę CDATA i zmieniam kod na:
xtw.writeStartElement("contents");
xtw.writeCData("<b>here</b>");
xtw.writeEndElement();
i tym razem wynik jest
<contents><![CDATA[<b>here</b>]]></contents>
która nadal nie jest dobra. Co ja naprawdę chcę to
<contents><b>here</b></contents>
Więc jest tam XML API/biblioteka, która pozwala mi pisać tekst surowe, nie będąc w sekcji CDATA? Do tej pory patrzyłem na Staxa i JDoma i nie wydają się tego oferować.
W końcu mógłbym użyć starego, dobrego StringBuildera, ale nie byłoby to eleganckie.
Aktualizacja:
Zgadzam się głównie z odpowiedziami tak daleko. Jednak zamiast <b>here</b>
mógłbym mieć 1MB dokumentu HTML, który chcę osadzić w większym dokumencie XML. To, co sugerujesz, oznacza, że muszę przeanalizować ten dokument HTML, aby zrozumieć jego strukturę. Chciałbym tego uniknąć, jeśli to możliwe.
Odpowiedź:
To nie jest możliwe, w przeciwnym razie można tworzyć nieważnych dokumentów XML.
Gdyby było to możliwe, zbyt łatwo można zapisać nieprawidłowe pliki XML. Nie, że większość HTML w świecie rzeczywistym (to nie XHTML) to ** nie ** poprawny XML (zbyt wiele niezamkniętych tagów i atrybutów bez zmiany znaczenia). Wszystko to jest dobre dla HTML, ale niedozwolone dla XML, więc używanie CDATA jest naprawdę jedyną właściwą rzeczą do zrobienia, chyba że twój HTML jest faktycznie XHTML. –
@ Joachim. Tak, w moim przypadku jest to XHTML. Właśnie dlatego wiem, że to jest poprawne i chcę je osadzić od razu bez żadnego przetwarzania. – kazanaki