1. 程式人生 > >c# XML無效字元過濾

c# XML無效字元過濾

XML無效字元相信用過Xml元件的人大部分都遇到過,不知道在什麼時候就會出現一個 Bad character 0x0B 的錯誤,通過我的不斷努力,終於找到一個基本上可以排除所有Xml 無效字元的方法。至今還沒有遇到過新的無效字元,而且中文字元也都可以保留。

以下為C#程式碼

//過濾方法
public static string FilterXmlErrorCode(string xml)
    {
        foreach (char c in xml)
        {
            if (!IsLegalXmlChar(c))
            {
                xml = xml.Replace(c.ToString(), "");
            }
        }

        return xml;
    }

    //xml 無效字元檢查
    private static bool IsLegalXmlChar(int character)
    {
        return
        (
             character == 0x9 /* == '/t' == 9   */     ||
             character == 0xA /* == '/n' == 10  */     ||
             character == 0xD /* == '/r' == 13  */     ||
            (character >= 0x20 && character <= 0xD7FF) ||
            (character >= 0xE000 && character <= 0xFFFD) ||
            (character >= 0x10000 && character <= 0x10FFFF)
        );
    }

然後就是呼叫啦 
把想用的字元呼叫這個方法就行啦~

string example = "xxxxx";
example = FilterXmlErrorCode(example);

當然,這個方法會佔用一些資源,尤其是字串非常長的時候。如果可以catch到xml報錯,也可以在catch住以後再進行過濾。