thế nào về điều này:
var xml:XML = <doc><{nodeName}>{nodeValue}</{nodeName}></doc>
trace(xml.toXMLString());
kết quả đầu ra:
<doc>
<tag><non-escaped-content></tag>
</doc>
tôi thừa nhận, đây không phải là CDATA
, nhưng tôi không thấy một vấn đề ... phân tích đòi hỏi một ít thời gian hơn, nhưng OTOH, hãy thoát đúng hơn nhiều so với CDATA
...
phiên bản với XMLNode
sử dụng gói flash.xml
, dành cho tương thích ngược với AS2 ... thậm chí còn không để ý, nó đã biến mất dưới FP10 ... tuy nhiên, bạn có thể sử dụng này
var x:XML = new XML("<![CDATA[" + nodeValue + "]]>");
như một sự thay thế và sau đó sử dụng appendChild
như bạn làm với flash.xml .. .
cách khác bạn có thể sử dụng nó phong cách E4X, nếu bạn bọc nó trong một hàm
function cdata(data:String):XML {
return = new XML("<![CDATA[" + data + "]]>");
}
và sau đó
var xml:XML = <doc><{nodeName}>{cdata(nodeValue)}</{nodeName}></doc>
nhưng cá nhân tôi, tôi nghĩ rằng chuỗi, mà cả hai đều dựa trên văn bản và tương đối ngắn, nên được thoát, chứ không phải sau đó được bọc trong CDATA
...
update: tôi không nhận được quan điểm của bạn đây
"<"
is very different than a "<"
đó là những gì toàn bộ điều là về ...: D ... "<"
sẽ được giải thích trong phân tích cú pháp, trong khi "<"
chỉ là r được chuyển đổi thành "<"
, vì vậy sau khi phân tích cú pháp XML, bạn sẽ có chính xác cùng một chuỗi như trước đây ...
đây là mã của tôi:
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 + "]]>");
}
}
}
công trình hoàn hảo cho tôi trên flash player 10, biên soạn với sdk flex 4 ... không có một IDE đèn flash trong tầm tay, nhưng khi nói đến tinh khiết ActionScript kết quả gần như chắc chắn giống nhau, vì vậy nó sẽ hoạt động (bạn có thể sử dụng nó như lớp tài liệu của bạn, nếu bạn muốn, hoặc đơn giản là tạo ra nó) ...
btw. những dấu vết đầu tiên cho thấy, rằng ví dụ thứ hai hoạt động, đó cũng là khá rõ ràng, vì new XML(<String>)
sử dụng có nguồn gốc XML
phân tích cú pháp để tạo ra một XML
từ chuỗi cho trước ...
đây là những gì tạo ra ở trên:
<![CDATA[test]]>
<doc>
<tag><![CDATA[<non-escaped-content>]]></tag>
</doc>
công trình khá tốt cho tôi ... :)
Greetz
lại 2dos
trả lời cập nhật ... greetz – back2dos