Avatar billede klausj Nybegynder
18. oktober 2001 - 14:30 Der er 10 kommentarer

Funktion til at konvertere ulovlige tegn i xml-streng

Hej!

Jeg har en streng af xml, jeg får tilbage fra et tredjeparts-program, som jeg skal håndtere og sende ind i et andet tredjepartsprogram.

Den kan indeholde ulovlige tegn som f.eks.:
...<comment>Anders And & Co</comment>...

eller

...<comment>Prisen er < end hos konkurrenterne</comment>...

Det vil jeg jo gerne have makket lidt i, så & bliver til &amp;, og andre specialtegn der gør det til en ulovlig streng.

Findes der en funktion til det?

På forhånd tak!

- Klaus
Avatar billede stigc Nybegynder
18. oktober 2001 - 14:33 #1
server.htmlencode(strTemp) virker fint!
Avatar billede klausj Nybegynder
18. oktober 2001 - 14:33 #2
Den laver jo også <comment> om og så er det ikke længere en valid xml-streng.
Avatar billede klausj Nybegynder
18. oktober 2001 - 14:34 #3
For det har jeg nemlig prøvet...
Avatar billede stigc Nybegynder
18. oktober 2001 - 14:37 #4
Det er jo rigtig nok......
Avatar billede klausj Nybegynder
18. oktober 2001 - 14:38 #5
:)
Avatar billede nute Nybegynder
18. oktober 2001 - 14:39 #6
well...denne funksjon benytter jeg selv. Hele functionaliteten er som følger. Du har en array med \"vanlige\" tegn og en array med UTF, ASCII, unicode eller hva du nå vil bytte dem til. Deretter har du en funksjon som bytter alle tegn i den ene eller andre array med hverandre (jeg poster den i JScript, men hvis du vil ha den i VBScript, så bare gi beskjed). Parameterne som blir sendt til metoden er teksten du vil endre i, og et boolsk parameter for å endre fra \"vanlige\" tegn til \"spesielle\" tegn (true) eller fra \"spesielle\" tegn til \"vanlige\" tegn (false):


var containerArr  = new Array(1);
var specialCharArr = new Array(29);
var normalCharArr  = new Array(29);

specialCharArr[0]= \"&#x00C6;\";
normalCharArr[0]= \"Æ\";
specialCharArr[1]= \"&#x00D8;\";
normalCharArr[1]= \"Ø\";
// og så videre

encodeText( \"Din text\", true );

function encodeText( text, toUTF ){
    var specialCharArr = containerArr[0];
    var normalCharArr = containerArr[1];
    var re, findTxt, replaceTxt, returnTxt;
    returnTxt  = text;

    for(var i=0; i <= specialCharArr.length; i++ ){
        findTxt    = (toUTF ? normalCharArr[i] : specialCharArr[i] );
        replaceTxt = (toUTF ? specialCharArr[i] : normalCharArr[i] );
      if( returnTxt.indexOf(findTxt) > -1 ){
            re = new RegExp( findTxt );
        returnTxt = returnTxt.replace( re, replaceTxt );
        }
    }
  return returnTxt;
}

/nute
Avatar billede klausj Nybegynder
18. oktober 2001 - 14:43 #7
Problemet er netop at jeg ikke bare kan replace løs, fordi det er kun mellem <comment> og </comment>, der skal replaces... Den skal altså på en eller anden måde være tilpasset xml...

Ellers en meget neat funktion. :)
Avatar billede nute Nybegynder
18. oktober 2001 - 14:50 #8
jammen så skal du jo bare sette dine spesialtegn inn i <![CDATA[]]> !!

<comment>Prisen er <![CDATA[<]]> end hos konkurrenterne</comment>

eller

<comment>Anders And <![CDATA[&]]> Co</comment>

det er jo ikke noe du skal fedte med i din asp

/nute
Avatar billede klausj Nybegynder
18. oktober 2001 - 15:34 #9
Jeg har også kigget på CDATA, og det virker da også fint når jeg lige retter i det manuelt- men jeg mangler jo stadig at kunne nøjes med at erstattet inde mellem <comment> og </comment>. Om jeg indsætter CDATA eller &amp; gør ingen praktisk forskel.
Avatar billede nute Nybegynder
18. oktober 2001 - 15:44 #10
så skal du til med DOM programmering for å hente ut teksten som ligger mellom <comment> og </comment>.

Men hvorfor skal du la din .asp kode behandle xml dokumentet når du kan gjøre det med xslt ? Det høres ut som at du prøver å finne opp den dype tallerken en gang til...

/nute
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