C# 保存包含无效字符的XML

C# 保存包含无效字符的XML,c#,xml,string,C#,Xml,String,在我们将字符串保存为XML之前,有一些代码片段会去除字符串中的无效字符。。。但我还有一个问题:假设我的用户想要一个像“[MyColumnOne]”这样的列名,所以现在我不想去掉这些“[”,“],因为这些是用户定义的,并且希望看到它们,所以如果我使用一些代码去掉无效字符,它们也会删除“[”和“[”但在这种情况下,我仍然需要保存它们……我能做什么?没关系,我将我的正则表达式格式更改为使用XML 1.1而不是XML 1.0,现在它工作正常: string pattern = String.Empty;

在我们将字符串保存为XML之前,有一些代码片段会去除字符串中的无效字符。。。但我还有一个问题:假设我的用户想要一个像“[MyColumnOne]”这样的列名,所以现在我不想去掉这些“[”,“],因为这些是用户定义的,并且希望看到它们,所以如果我使用一些代码去掉无效字符,它们也会删除“[”和“[”但在这种情况下,我仍然需要保存它们……我能做什么?

没关系,我将我的正则表达式格式更改为使用XML 1.1而不是XML 1.0,现在它工作正常:

string pattern = String.Empty;
//pattern =  @"#x((10?|[2-F])FFF[EF]|FDD[0-9A-F]|7F|8[0-46-9A-F]9[0-9A-F])"; //XML 1.0
pattern =  @"#x((10?|[2-F])FFF[EF]|FDD[0-9A-F]|[19][0-9A-F]|7F|8[0-46-9A-F]|0?[1-8BCEF])"; // XML 1.1
Regex regex = new Regex(pattern, RegexOptions.IgnoreCase);

if (regex.IsMatch(sString))
{
   sString = regex.Replace(sString, String.Empty);
   File.WriteAllText(sString, sString, Encoding.UTF8);
}

return sString;

这对我很有效,而且速度很快

    private object NormalizeString(object p) {
        object result = p;

        if (p is string || p is long) {
            string s = string.Format("{0}", p);

            string resultString = s.Trim();
            if (string.IsNullOrWhiteSpace(resultString)) return "";

            Regex rxInvalidChars = new Regex("[\r\n\t]+", RegexOptions.IgnoreCase);

            if (rxInvalidChars.IsMatch(resultString)) {
                resultString = rxInvalidChars.Replace(resultString, " ");
            }

            //string pattern = String.Empty;
            //pattern = @"";
            ////pattern =  @"#x((10?|[2-F])FFF[EF]|FDD[0-9A-F]|7F|8[0-46-9A-F]9[0-9A-F])"; //XML 1.0
            ////pattern = @"#x((10?|[2-F])FFF[EF]|FDD[0-9A-F]|[19][0-9A-F]|7F|8[0-46-9A-F]|0?[1-8BCEF])"; // XML 1.1
            //Regex rxInvalidXMLChars = new Regex(pattern, RegexOptions.IgnoreCase);
            //if (rxInvalidXMLChars.IsMatch(resultString)) {
            //    resultString = rxInvalidXMLChars.Replace(resultString, "");
            //}

            result = string.Join("", resultString.Where(c => c >= ' '));
        }
        return result;
    }

如果您发布代码或XML,请在文本编辑器中突出显示这些行,然后单击编辑器工具栏上的“代码示例”按钮({}),以很好地格式化和语法突出显示它!XML不是常规语言!