最近在写一些东西的时候,有一些数据是使用XML来保存的,而其中有一些数据是一段HTML文本,一开始觉得没什么问题,当把这些HTML放到XML的一个结点的时候,才发现数据已经变样了。
原来在XML中有5个预定义的实体引用:
< < 小于
> > 大于
& & 和号
' ' 省略号
" " 引号
参考:http://www.w3school.com.cn/xml/xml_cdata.asp
HTML和XML差不多,是由一些预定义的标签组成的,所以包含了大量的"<"、">"符号。
所以有两个方法可以将HTML插入到XML中:
1、将HTML进行一次转换,将所有的"<"、">"等预定义符号转换成相应的实体引用。
2、将HTML包在CDATA中。
很明显,第一种方法比较烦琐,序列化数据的时候和把序列化的时候都需要进行转换。
第二种方法则很简单了。
写了一个方法:
1 2 3 4 5 6 7 |
public class XMLUtil { public static function CDATA(data:String):XML { return new XML( " <![CDATA[ " + data + " ]]\> " ); } } |
可以这样使用:
1 |
var node:XML = < node > {XMLUtil.CDATA( " 字符串 " )} </ node > ; |
参考: http://cookbooks.adobe.com/post_Create_CDATA_tags_between_XML_nodes_using_AS-6142.html