2010-07-06 4 views
1

Я помню, как это делалось раньше, поэтому, я думаю, я что-то пропустил. Свойство nodeType XMLNode поддерживает только ELEMENT_NODE и TEXT_NODE, и если я попытаюсь добавить раздел CDATA в XMLNode в виде строки, он будет экранирован.Как вы добавляете раздел CDATA в объект XMLDocument в ActionScript 3?

var node:XMLNode = new XMLNode(3, "<![CDATA[some text and <tags> here]]>"); 

Что я получаю это TEXT_NODE следующее значение:

& л [CDATA [некоторый текст и & л , ярлычки & Гт! здесь]] & gt;

, который даже не является допустимым значением для TEXT_NODE

ответ

0

Он не разбирает, вам может понадобиться делать попутный его.

Trial один: добавить содержимое узла в виде строки

var sometext:String = 'some text and <tags> here'; 

добавить пустой XMLNode в документ, а затем использовать xml.replace

xml.replace('blanknode','<blanknode><![CDATA[' + sometext + ']]></blanknode>'); 

Trial два: вернуть его от функции возврата XML в XMLNode

Update

var sometext:String = 'some text and <b>bold</b> here'; 
     var nodeblank:XMLNode = new XMLNode(1,insert(sometext)); 
     trace(nodeblank); 


     var txt:TextField = new TextField(); 
     txt.htmlText = nodeblank.nodeName; 
     addChild(txt); 

Это показывает, в TextField -> какой-нибудь текст и полужирный здесь

public function insert(s:String):XML { 
      var x:XML = new XML("<![CDATA[" + s + "]]>"); 
      return x; 
    } 
+0

Если я правильно понимаю, вы говорите об использовании класса XML, но таким образом я Я потеряю все возможности XMLDocument и XMLNode, не так ли? Не могли бы вы рассказать об этом решении «Trail two»? – Leeron

+0

yip, это правильно, если вам нужна обратная совместимость с AS2, тогда 1 не будет работать. – phwd