c# XML無效字元過濾
阿新 • • 發佈:2018-11-10
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住以後再進行過濾。