为了账号安全,请及时绑定邮箱和手机立即绑定

在C#中转义无效的XML字符

在C#中转义无效的XML字符

ITMISS 2019-11-29 10:55:12
我有一个包含无效XML字符的字符串。在解析字符串之前,如何转义(或删除)无效的XML字符?
查看完整描述

3 回答

?
函数式编程

TA贡献1807条经验 获得超9个赞

这是上述方法RemoveInvalidXmlChars的优化版本,该方法不会在每次调用时都创建一个新数组,因此不必要地给GC施加了压力:


public static string RemoveInvalidXmlChars(string text)

{

    if (text == null)

        return text;

    if (text.Length == 0)

        return text;


    // a bit complicated, but avoids memory usage if not necessary

    StringBuilder result = null;

    for (int i = 0; i < text.Length; i++)

    {

        var ch = text[i];

        if (XmlConvert.IsXmlChar(ch))

        {

            result?.Append(ch);

        }

        else if (result == null)

        {

            result = new StringBuilder();

            result.Append(text.Substring(0, i));

        }

    }


    if (result == null)

        return text; // no invalid xml chars detected - return original text

    else

        return result.ToString();


}


查看完整回答
反对 回复 2019-11-29
  • 3 回答
  • 0 关注
  • 1036 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信