Avatar billede benjax Nybegynder
18. maj 2004 - 15:29 Der er 9 kommentarer og
1 løsning

Sætte en UTF-8 værdi i DOM-træ

Jeg har problemer med at sætte en streng indeholdende fx "æøå" ved hjælp af myNode.setNodeValue("Værdi").

DOM-træet er created ud fra en XML-fil, som har encoding="UTF-8".

Kun værdien frem til specialtegnet bliver sat på noden. Hvis man herefter beder om at få udskrevet hele XML-træet, vises kun værdierne indtil det pågældende tegn, dvs. XML'en bliver ugyldig, da end-tags smides væk.

Hvordan får jeg sat en værdi på en text node, hvor denne kan være UTF-8?

På forhånd tak.
Avatar billede arne_v Ekspert
18. maj 2004 - 23:29 #1
DOM træer er en Java in memory data struktur.

Og sådanne er altid i Unicode (16 bit per tegn).

Når der så skal udskrives til fil kan man udskrive som UTF-8 eller ISO-8859-1
eller noget mere eksotisk.

Umiddelbare spørgsmål er derfor: hvordan udskriver du den XML ?
Avatar billede benjax Nybegynder
19. maj 2004 - 08:44 #2
-> arne_v, tak for din kommentar. Det *var* udskrivningen, som fejlede. Problemet er imidlertid mere nuanceret. Det ser nemlig ud til at problemet opstår, fordi XML-dokumentet proppes ind i et felt i en SOAP-envelope, og denne fejler så ved modtagelsen på en webservice.

Er en SOAP-envelope UTF-8 som default, og i modsat fald, hvordan sættes encoding på SOAP?
Avatar billede benjax Nybegynder
19. maj 2004 - 08:56 #3
Koden omkring afsendelse/modtagelse af SOAP-kuvert ser således ud:

// create message envelope and body
Envelope msgEnv = new Envelope();
Body msgBody = new Body();
Vector vect = new Vector();
vect.add(parameters);
msgBody.setBodyEntries(vect);
msgEnv.setBody(msgBody);
// create and send message
Message msg = new Message();
msg.send(getURL(), SOAPActionURI, msgEnv);

// receive response envelope
Envelope env = msg.receiveEnvelope();
Body retbody = env.getBody();
java.util.Vector v = retbody.getBodyEntries();
Avatar billede arne_v Ekspert
19. maj 2004 - 09:20 #4
Bruger du Axis ?
Avatar billede benjax Nybegynder
19. maj 2004 - 09:59 #5
På Java-siden (client) benyttes IBM's SOAP-implementering fra WebSphere, som vist er SOAP 2.0. Webservicen mener jeg heller ikke er baseret på AXIS.
Avatar billede arne_v Ekspert
19. maj 2004 - 23:05 #6
Axis kommer med et tool til at intercepte både request og respons.

Så kan man se HTTP headere og XML.

Toolet kan godt køre standalone, så en mulighed var at hente Axis og
starte toolet og så se hvad der sendes og hvad der modtages.
Avatar billede arne_v Ekspert
19. maj 2004 - 23:07 #7
http://ws.apache.org/axis/java/user-guide.html

Appendix : Using the Axis TCP Monitor (tcpmon)
Avatar billede benjax Nybegynder
20. maj 2004 - 08:33 #8
-> arne_v
Okay, det lyder som en glimrende idé. Det prøver jeg i næste uge, for nu skal jeg på Kr. Himmelfarts-ferie. Tak for hintet. :o)
Avatar billede arne_v Ekspert
16. juni 2004 - 23:11 #9
Kommet videre ?
Avatar billede benjax Nybegynder
17. juni 2004 - 11:21 #10
Problemet lå et andet sted, nemlig i den rutine, som tog DOM-træet og lavede om til en streng. Det er løst nu, tak for indsatsen.
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