Avatar billede ulrikp Nybegynder
21. februar 2002 - 16:24 Der er 3 kommentarer og
1 løsning

InputStream problem...

Jeg sender noget XML til et program over http protokollen, hvilket går glimrende. Programmet returnerer noget XML, som jeg først vil parse igennem for at få et Document-object og dernæst køre igennem en transformer, der parrer xml'en med et xsl dokument.

Problemet opstår 2. gang jeg vil bruge input streamen. Så er det som om at XML'en er forsvundet. Lukkes streamen uden at jeg explicit beder den herom, eller hvad sker der? Any ideas?

Herunder er et uddrag af koden. Jeg uddyber gerne, hvis det er nødvendigt.

DOMParser dp = new DOMParser();
InputStream IS = conn.getInputStream();
dp.parse(new InputSource(IS));
Document docOut = dp.getDocument();       

Source xmlSource = new StreamSource(IS);
Transformer transformer = tFactory.newTransformer(xslSource);
transformer.transform(xmlSource, new StreamResult(out));
Avatar billede disky Nybegynder
21. februar 2002 - 17:10 #1
når du har læst dokumentet en gang er det jo sendt igennem, og kan ikke hentes igen, du kan dog vist nok flytte positions pointeren.
Avatar billede logical Nybegynder
24. februar 2002 - 05:54 #2
Kig på følgende metoder i InputStream:

boolean marksupported()
void mark(int)
void reset()

og afprøv i din server. Hvis det ikke virker, skal der laves andre numre, så som at læse fra din conn ind i f.eks. et bytearray (brug en ByteArrayOutputStream til at lave det med).
Derefter kan du skabe to inputstreams til din parser og din transformer med new ByteArrayInputStream(byte[] bytes);
Avatar billede ulrikp Nybegynder
24. februar 2002 - 11:28 #3
Jeg har løst det ved at lave en DomSource, der tager et Document-objekt som argument i stedet. Altså i stedet for:
Source xmlSource = new StreamSource(IS);
siger jeg...
Source xmlSource = new DomSource(docOut);
Avatar billede logical Nybegynder
24. februar 2002 - 19:07 #4
Ja, der er mange muligheder :-)
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