Ehdoranil: create Entity Reference

Hallo

ich bekomme über einen AJAX Skript eine Entity Reference als XML übergeben und würde diese gern entsprechend als HTML Entity in eine TextNode einfügen. Hat jemand eine Ahnung, wie man das umsetzen könnte? createEntityReference ist ja für JS nicht implementiert :(

danke für eure Hilfe!

lg

  1. Hallo,

    ich bekomme über einen AJAX Skript eine Entity Reference als XML übergeben und würde diese gern entsprechend als HTML Entity in eine TextNode einfügen. Hat jemand eine Ahnung, wie man das umsetzen könnte? createEntityReference ist ja für JS nicht implementiert :(

    Dann musst Du Dir so eine Funktion schreiben. Solange es sich nur um CharRefs handelt, also in der Form '&#' [0-9]+ ';' oder  '&#x' [0-9a-fA-F]+ ';', dann dürfte das nicht mal so schwierig sein. Man muss den CharCode-Anteil aus der Referenz ermitteln und dann per String.fromCharCode das Zeichen daraus machen lassen.

    Beispiel:

      
    createCharRefTextNode = function(myString) {  
      var myRegExpDez = new RegExp("&#([0-9]+);");  
      var myRegExpHex = new RegExp("&x#([0-9a-fA-F]+);");  
      var myCharRefString = "";  
      while (myString.match(myRegExpDez)) {  
       myCharRefString = String.fromCharCode(RegExp.$1);  
       myString = myString.replace(myRegExpDez, myCharRefString);  
      }  
      while (myString.match(myRegExpHex)) {  
       myCharRefString = String.fromCharCode(parseInt(RegExp.$1,16));  
       myString = myString.replace(myRegExpHex, myCharRefString);  
      }  
      return document.createTextNode(myString);  
    }  
    
    

    Aufruf:
    createCharRefTextNode("Test & Test { Test Ô Test &x#26; Test &x#7B; Test &x#d4; Test"));

    Das ist nicht sehr gut ausgetestet!

    viele Grüße

    Axel

    1. Das ist ne interessante Idee... aber auch nicht gerade klein... hab bislang den Umweg über das Erzeugen einer dummy textarea, zuweisung des entity-codes über innerhtml und auslesen per .value. aber deine lösung sieht doch etwas sauberer aus. vielen danke!

      lg

      1. Hallo,

        Das ist ne interessante Idee... aber auch nicht gerade klein...

        und auch noch nicht vollständig. Das gibt bisher erst auf, wenn keine CharRef-Entities mehr vorhanden sind. Man kann also auch per & _nicht_ die Zeichenkette "&" erzwingen. Außerdem wird auch ein � umgesetzt und beendet damit den String.

        hab bislang den Umweg über das Erzeugen einer dummy textarea, zuweisung des entity-codes über innerhtml und auslesen per .value. aber deine lösung sieht doch etwas sauberer aus.

        Wenn innerHTML eine Option ist, dann kannst Du doch einfach das innerHTML des Elements setzen, in das Du jetzt den TextNode einhängst. Von innerHTML werden Entities umgesetzt.

        viele Grüße

        Axel