Avatar billede orca Nybegynder
17. marts 2006 - 02:12 Der er 4 kommentarer og
1 løsning

XMLOutputter vil ikke outputte HTML

Hejsa

Jeg læser et ATOM feed fra nettet og parser dette. Alt går fint indtil jeg skal udskrive indholdet af et givent element (<content>). Content elementet indeholder en vilkårlig HTML kode. Jeg kører det hele under Tomcat og jeg bruger JDOM til XML håndteringen.

Følgende kode:

...
XMLOutputter xo = new XMLOutputter();
xo.outputElementContent(entry.getChild("content", ns), swContent);
...

Outputter også fint indholdet til min StringWriter sw. Problemet er dog at alle HTML tags oversættes til HTML entities, dvs. < bliver til &lt; osv. Det giver naturligvis et problem da al HTML koden udskrives direkte i browseren i stedet for at blive parset.

Jeg har forsøgt at lege med at sende en Format klasse med i XMLOutputterens constructor, men den ser ikke ud til at reagere overhovedet.
Avatar billede arne_v Ekspert
17. marts 2006 - 02:46 #1
hvis der er "tags" i text noder så skal XML formatteren jo gøre præcis hvad den gør
for at tags netop bliver betragtet som data

du beder faktisk JDOM om at outputte invalid XML

løsningen må være udskrive uden at bruge XML output funktionalitet
Avatar billede orca Nybegynder
17. marts 2006 - 02:52 #2
Har du i så fald et eksempel på hvorledes dette gøres? Den relevante XML ser ud som her:


....
<entry>
  ...
  <content>--- Vilkårlig HTML indhold ---</content>
  ...
</entry>

Jeg har et JDOM Element som repræsenterer entry elementet. Jeg skal have indholdet af content elementet ud præcist som det står, dvs. alle HTML tags kommer ud som HTML tags, og eventuelle HTML entities skal også bibeholdes.

Jeg har også forsøgt mig med en rekursiv metode som løb et elements .getContent() igennem og udskriv disse værdier og kørte metoden selv på eventuelle child elementer. Her kom HTML'en sådan set fint nok ud, men nu blev mine HTML entities lavet om til desiderede HTML tags, hvilket ikke skulle gøres.
Avatar billede arne_v Ekspert
17. marts 2006 - 02:59 #3
swContent.println(entry.getChild("content", ns).getText());

måske ??
Avatar billede orca Nybegynder
17. marts 2006 - 03:05 #4
Og nu er det så jeg kan undre mig over hvordan jeg har kunnet kæmpe med så simpelt et problem over to dage... Hvordan jeg har kunnet prøver diverse komplicerede løsninger og alligevel åbenbart overse noget så simpelt.

Tak er småt i denne sammenhæng, men tak skal du ha... Smid et svar, jeg insisterer.
Avatar billede arne_v Ekspert
17. marts 2006 - 03:06 #5
det lyder som om det virkede ...

:-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester