推荐的System.Security.SecureElement.Escape()方法似乎不适用于通用Windows平台应用程序。
将字符串(例如Wet Paint & Co
)转换为XML安全表单(Wet Paint & Co
)的推荐方法是什么?
答案 0 :(得分:1)
如果您在remarks in the MSDN下查看,则可以找到包含所有字符的表格,这些字符将从double[] Gravity = getGravity();
转义。最简单的方法是用自己的方法替换这些字符:
SecurityElement.Escape
但这很慢,因为每个public static string Escape(string str){
return str.Replace("&", "&")
.Replace(">", ">")
.Replace("\"", """)
.Replace("\'", "'")
.Replace("<", "<");
}
都会创建一个新的字符串实例。对于大字符串,最好迭代字符串并将字符添加到Replace
。
StringBuilder
然而,我读到您使用public static string Escape(string str)
{
var sb = new StringBuilder();
foreach (var chr in str)
{
switch (chr)
{
case '&':
sb.Append("&");
break;
case '<':
sb.Append("<");
break;
case '>':
sb.Append(">");
break;
case '"':
sb.Append(""");
break;
case '\'':
sb.Append("'");
break;
default:
sb.Append(chr);
break;
}
}
return sb.ToString();
}
构建XML,因此您可以修改我的StringBuilder
方法并将Replace
传递给它。因此没有必要创建第二个实例。
但是在大多数情况下,没有必要自己编码一个字符串,因为StringBuilder
等类会为你做。正如其他人在你的问题的评论中所说,我也认为使用LinQ to XML(XElement
,...)或XML序列化来生成XML更容易。
仅为完整性