intesaMedlem sedan apr. 2006190 inlägg
Har ett program som tar emot data i xml-format enligt:
<message>
<text>Text</text>
<img>Base64 kodad data</img>
</message>
Använder mig av Jakarta Commons Digester för att parsa genom filen, men eftersom "img"-datan kan vara rätt stor skulle jag vilja göra om den till binär-data och spara ner den till en fil allt eftersom datan kommer in, istället för som nu när all data tagits emot.
Det pinsamma i situationen är att jag gjort detta i ett projekt för ett par år sen. Men nu har jag sumpat koden och kan inte komma på hur jag gjorde :r
Några ideér? :i
spangoMedlem sedan juni 20006 147 inlägg
Du kanske vill läsa direkt från SAX-parsern istället för att bygga ett DOM-träd?
http://java.sun.com/webservices/jaxp/dist/1.1/docs/tutorial/sax/2a_echo.html
intesaMedlem sedan apr. 2006190 inlägg
Jaha, så lätt var det, tack spango!
LimeMedlem sedan sep. 2001837 inlägg
Mmm... SÅ lätt är det. I det projektet jag sitter i nu har en av gubbarna skrivit en EGEN SAX-parser istället för att använda någon befintlig "för jag vet ju inte om den du sagt att vi ska använda fungerar". *suck*
intesaMedlem sedan apr. 2006190 inlägg
Äta kakan och ha den kvar
Drar upp den här tråden igen för nu har jag lite mer problem.
Det är nämligen så att XML-protokollet har utökats och blivit mycket mer avancerat, vilket gör att man i princip måste modda SAX-parsern för att kunna bygga upp ett DOM-träd för att få lite struktur på det hela och för att kunna behandla datan på ett bra sätt senare. Fast nu vill jag ju inte göra som gubben i Limes projekt och uppfinna hjulet på nytt ;)
Hade en liten fundering på om det skulle kunna gå att lägga in ett filter på inputstreamen som kör datan genom en SAX-parser och spar ner den base64 kodade datan och ersätter den med sökvägen dit datan sparades innan en DOM-parser läser in datan som såhär:
Före filtrering:
<message>
<image>
<text>Text 1</text>
<data>Base64 data</data>
</image>
<image>
<text>Text 2</text>
<data>Base64 data</data>
</image>
</message>
Efter filtrering:
<message>
<image>
<text>Text 1</text>
<data>/tmp/fil1.png</data>
</image>
<image>
<text>Text 2</text>
<data>/tmp/fil2.png</data>
</image>
</message>
Hur gör jag detta på bästa sätt tro?