E4X Hinzufügen von CDATA-Inhalt
Im Prinzip brauche ich zum definieren eines node-Namen und den CDATA-Inhalten mithilfe von Variablen.
var nodeName:String = "tag";
var nodeValue:String = "<non-escaped-content>";
Naiv dachte ich, das würde funktionieren :
var xml:XML = <doc><{nodeName}><![CDATA[{nodeValue}]]></{nodeName}>
Ausgänge :
<doc><tag><![CDATA[{nodeValue}]]></tag></doc>
In einer früheren version des Skripts entworfen für FP9 ich umging das problem, indem Sie :
new XMLNode( XMLNodeType.XMLNodeType.CDATA_NODE, nodeValue ); //...
aber das scheint nicht zu funktionieren in FP10, und ich habe das Gefühl, die Methode ist irgendwie sowieso abgeschrieben.
Jemand eine elegante Lösung dafür ?
- Antwort aktualisiert ... greetz
Du musst angemeldet sein, um einen Kommentar abzugeben.
wie wäre es damit:
Ausgänge:
ich gebe zu, das ist nicht
CDATA
, aber ich sehe kein problem ... Analyse erfordert ein wenig mehr Zeit, aber OTOH, richtige escaping viel robuster alsCDATA
...die version mit
XMLNode
verwendet dieflash.xml
- Paket, das ist für die Abwärtskompatibilität mit AS2 ... gar nicht bemerkt hatte, war es Weg unter FP10 ... aber, Sie könnte dieseals Ersatz, und verwenden Sie dann
appendChild
als würden Sie mit flash.xml ...alternativ könnte man es e4x-Stil, wenn Sie wickeln Sie es in eine Funktion
dann
aber ich persönlich denke, dass Zeichenfolgen, die sowohl text-basiert und relativ kurz ist, sollten escaped werden, sondern dann, eingewickelt in
CDATA
...update:
ich nicht bekommen, Ihren Standpunkt hier
das ist, was die ganze Sache über ... 😀 ...
"<"
würde interpretiert werden, die während der Analyse, in der Erwägung, dass"<"
ist nur zurückverwandelt zu"<"
, so dass nach dem Parsen der XML-haben Sie genau die gleiche Zeichenfolge wie zuvor ...dies ist mein code:
funktioniert perfekt für mich, auf flash player 10, der Kompilierung mit flex sdk 4 ... don ' T habe eine flash-IDE zur hand, aber wenn es um Reine ActionScript-Ergebnisse sind fast jeden Fall die gleichen, so sollte es funktionieren (Sie können verwenden Sie diese als Ihre Dokument-Klasse, wenn Sie wollen, oder einfach instanziieren) ...
btw. die erste Spur zeigt, dass das zweite Beispiel funktioniert, ist auch klar, da
new XML(<String>)
verwendet die nativeXML
parser zu erstellen, die eineXML
aus dem gegebenen string ...hier ist, was die oben generiert:
funktioniert ganz gut für mich ... 🙂
greetz
back2dos
Den oben genannten cdata-Funktion muss wie folgt Aussehen, sehen, dass die Letzte ">" ist das entkommen im code. Ansonsten gibt es Fehler bei der Kompilierung.
Dank, cdata-Funktion ist sehr nützlich. Ich schrieb nur neue.
funktionieren 🙂
Hier ist eine andere Lösung
Hier ist meine Lösung ohne Verwendung von Funktionen:
Wenn Sie ersetzen müssen, die vorhandenen Knoten Inhalte und halten Knoten-Attributen die Sie verwenden können: