輸出後檢測卻發現了一個元素所填入的資料含有特殊字元
如下圖:
既然已知是特殊字元,那就是把它取代掉就沒事了。
可是...是哪些特殊字元不能用?拜神之後得到一些可能的答案
原來是ASCII碼中 00H 到 1FH字元是控制字元,所以XML在讀取時會出現錯誤
詳情請見W3C定義查閱
既然找到哪些字元了,那就可以寫一段方法專門處理這種字串。
參考網路上找到的寫法如下:
public static class YCExtension
{
///
/// Removes control characters and other non-UTF-8 characters
///
/// The string to process
/// A string with no control characters or entities above 0x00FD
public static string RemoveTroublesomeCharacters(this string inString)
{
if (inString == null) return null;
StringBuilder newString = new StringBuilder();
char ch;
for (int i = 0; i < inString.Length; i++)
{
ch = inString[i];
// remove any characters outside the valid UTF-8 range as well as all control characters
// except tabs and new lines
if ((ch < 0x00FD && ch > 0x001F) || ch == '\t' || ch == '\n' || ch == '\r')
{
newString.Append(ch);
}
}
return newString.ToString();
}
}
參考出處:
http://stackoverflow.com/questions/20762/how-do-you-remove-invalid-hexadecimal-characters-from-an-xml-based-data-source-p
http://home.educities.edu.tw/wanker742126/asm/ap04.html
--------------------------------------------------------------------------------------------------------------
2014/06/21補充:
最近又遇到,重新查了一次資料,找到了Linq的寫法,簡明扼要,一行搞定!!!
語法如下
string s="含有控制字元內容"; s =new string(s.Where(p => !char.IsControl(p)).Select(p=>p).ToArray());
--------------------------------------------------------------------------------------------------------------

在xml的時候用CData標明是"字",不是比較快嗎?...
回覆刪除不專業路過...
CDATA一樣會爆
回覆刪除