wie über dieses:
var xml:XML = <doc><{nodeName}>{nodeValue}</{nodeName}></doc>
trace(xml.toXMLString());
Ausgänge:
<doc>
<tag><non-escaped-content></tag>
</doc>
Ich gebe zu, das ist nicht CDATA
, aber ich sehe nicht ein Problem ... Parsing ein wenig mehr Zeit erfordert, aber OTOH, korrektes Entkommen viel robuster als CDATA
...
die Version mit XMLNode
verwendet das flash.xml
Paket, das für Abwärtskompatibilität mit AS2 ... nicht einmal bemerkt haben, wurde es ... aber unter FP10 gegangen, können Sie diese
var x:XML = new XML("<![CDATA[" + nodeValue + "]]>");
als Ersatz verwenden könnte und appendChild
dann verwenden, wie Sie es mit flash.xml .. wenn Sie es in einer Funktion
function cdata(data:String):XML {
return = new XML("<![CDATA[" + data + "]]>");
}
und dann
var xml:XML = <doc><{nodeName}>{cdata(nodeValue)}</{nodeName}></doc>
wickeln.
alternativ könnte man es e4x Stil verwenden,
aber persönlich, ich glaube, dass Strings, die sowohl basierter Text sind und relativ kurz, eher in CDATA
...
Update dann gewickelt entwertet werden soll: i nicht bekommen, Ihren Punkt hier
"<"
is very different than a "<"
, das ist es, was die ganze Sache über ... ist: D ... "<"
würde beim Parsen interpretiert werden, während "<"
gerade ist r econverted zu "<"
, also nach der Analyse der XML, haben Sie genau die gleiche Schnur wie vorher ...
dies ist mein Code:
package {
import flash.display.MovieClip;
public class Main extends MovieClip {
public function Main():void {
var nodeName:String = "tag";
var nodeValue:String = "<non-escaped-content>";
var xml:XML = <doc><{nodeName}>{cdata(nodeValue)}</{nodeName}></doc>;
trace(cdata("test").toXMLString());
trace(xml.toXMLString());
}
private function cdata(data:String):XML {
return new XML("<![CDATA[" + data + "]]>");
}
}
}
Werke für mich perfekt auf Flash Player 10, mit Flex SDK 4 zusammengestellt ... kein Flash-IDE zur Hand haben, aber wenn es um die reine Actionscript Ergebnisse sind fast auf jeden Fall die gleiche, so sollte es funktionieren (Sie, dass als Dokumentenklasse verwenden können, wenn Sie wollen, oder es einfach instanziiert) ...
btw. die erste Spur zeigt, dass das zweite Beispiel funktioniert, die auch ganz offensichtlich, da new XML(<String>)
die native XML
Parser verwendet eine XML
aus dem gegebenen String ...
hier ist das, was die oben erzeugt zu erstellen:
<![CDATA[test]]>
<doc>
<tag><![CDATA[<non-escaped-content>]]></tag>
</doc>
funktioniert bei mir ganz gut ... :)
greetz
zurück 2dos
Antwort aktualisiert ... greetz – back2dos