当前位置: > > > Flex - 实现XML中特殊字符的转义、还原

Flex - 实现XML中特殊字符的转义、还原

1,问题描述

我们知道在 Flex 中书写 XML 时,遇到小于号(<)、大于号(>)等特殊字符都需要进行转义。具体的转义符如下:
  • <:&lt; 
  • >:&gt;
  • &:&amp; 
  • ':&apos; 
  • ":&quot; 

比如下面我们需要在一个 xml 对象中写入一段包含特殊符号的文字:
var name:String = "<<<hangge>>>"
var device:XML = new XML('<device id="47" name="' + name + '" ></device>');

如果这段文字里的特殊符号如果不进行转义的话就会运行报“XML 分析器失败”错误。

2,实现一个自动转义的方法

如果特殊符号很多,手动去一个个修改的话很麻烦,我们可以实现一个自定转义的方法,使用时直接调用就好了。
package 
{
	public class XMLUtilEx
	{	
		//将字符串里的特殊符号进行转义.如 < 转成  &gt;
		public static function toSafeXMLString(value:String):String {
			value = value.replace(/&/gi, "&amp;");
			value = value.replace(/</gi, "&lt;");
			value = value.replace(/>/gi, "&gt;");
			value = value.replace(/'/gi, "&apos;");
			value = value.replace(/"/gi, "&quot;");
			return value;
		}
		
		//将转义后的字符串还原.如  &gt; 转成  <
		public static function fromSafeXMLString(value:String):String {
			value = value.replace(/&amp;/gi, "&");
			value = value.replace(/&lt;/gi, "<");
			value = value.replace(/&gt;/gi, ">");
			value = value.replace(/&apos;/gi, "'");
			value = value.replace(/&quot;/gi, "\"");
			return value;
		}
	}
}

3,使用样例

var name:String = XMLUtilEx.toSafeXMLString("<<<hangge>>>");
var device:XML = new XML('<device id="47" name="' + name + '" ></device>');
评论0