Avatar billede bris Nybegynder
31. juli 2003 - 11:31 Der er 4 kommentarer og
1 løsning

Java og XML

Hejsa! Jeg har endnu et spørgsmål til xml :)

Jeg har puttet følsom data ind i <![CDATA[data]]>, som skulle undgå underlige tegn osv..

MEN!.. Hvis jeg bruger den her: <![Pho1:? ??÷6? 0²?]]> så virker det ikke..

firkanten er tegn 15, som betyder shift in! Det ødelægger min xml og giver mig fejl under parsning.

Hvordan kan jeg undgå dette.. Jeg bruger forresten en SAXParser javax.xml.parsers.SAXParser;
Avatar billede arne_v Ekspert
31. juli 2003 - 17:07 #1
Kunne du poste en lille komplet XML fil som har problemet ?
Avatar billede bris Nybegynder
04. august 2003 - 08:06 #2
<?xml version="1.0" encoding="windows-1252"?>
  <Table name="blabla">
  <blabla>
      <Id type="1111"><![CDATA[{0D192A9B-EB9E-1853-B004-EEA99366AF43}]]></Id>
      <ColTimeDev type="5"><![CDATA[871]]></ColTimeDev>
      <CollectTime type="4"><![CDATA[1058966209]]></CollectTime>
      <ItemIndex type="4"><![CDATA[764]]></ItemIndex>
      <Data type="-1"><![CDATA[Pho1:? ??÷6? 0²?]]></Data>
      <DataLogId type="1111"><![CDATA[{4C46EA9F-18E6-7BE2-45C6-F2DACC21E463}]]></DataLogId>
      <ActionId type="4"><![CDATA[1880096769]]></ActionId>
  </blabla>
  </Table>

Den her har problemet.. Sorry jeg først har svaret nu.. En lille ferie sneg sig ind :)
Avatar billede arne_v Ekspert
10. august 2003 - 18:14 #3
Jeg har nu haft tid til at undersøge sagen lidt.

XML 1.0 siger:

Consequently, XML processors must accept any character in the range specified for Char.

Character Range
[2]        Char       ::=        #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF]     /* any Unicode character, excluding the surrogate blocks, FFFE, and FFFF. */

altså er de tegn ikke valide.

Endvidere:

[Definition: CDATA sections may occur anywhere character data may occur; they are used to escape blocks of text containing characters which would otherwise be recognized as markup. CDATA sections begin with the string "<![CDATA[" and end with the string "]]>":]

CDATA kan kun bruges til tekst som overholder de normale regler
for XML (se ovenfor) men < og > vil blive opfattet som normale
chars ikke som start og slut på tags.

Derfor får du ikke en XML parser til at parse den fil.

Det du skal gøre er at konvertere de binære data til hexadecimal.

Tegn 15 bliver så til "0F".

Det der parser kan så konvertere tilbage igen.

Den metode bruges meget til binære data i XML.
Avatar billede arne_v Ekspert
18. august 2003 - 23:44 #4
OK ?
Avatar billede bris Nybegynder
25. august 2003 - 09:41 #5
Det havde jeg faktisk gjort, men siden du gav mig retningslinierne, så fortjener du også point! :) tak for hjælpen endnu en gang ! :)
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