2010-07-08 57 views
1

我該如何輕鬆清理我傳遞給XAttribute的Value屬性的值。消毒XML屬性值

+1

定義「消毒」,你可能會得到一個有用的答案。 – spender 2010-07-08 23:31:06

+0

基本上它拋出一個錯誤,保存它不能接受某個字符'/ 0'。我假設有其他的字符,它不能接受,所以我想知道是否有一種方法來刪除它們。 – Dested 2010-07-08 23:32:36

+1

可能會添加該信息到實際的問題... – 2010-07-08 23:44:04

回答

1

這裏有一個擴展方法來清除你的麻煩。 XML中不允許使用/ 0。我不確定是否其他字符也被禁止,但我不相信。可能最好從' '開始。

void Main() 
{ 

    Console.WriteLine("123\0394".XmlSanitize()); 

} 

public static class XmlHelpers 
{ 
    public static string XmlSanitize(this string badString) 
    { 
     return new String(badString.Where(c => c >=' ').ToArray()); 
    } 
} 
1

你可以嘗試:

string value = "[email protected]#$%^&*()123%^&*([email protected]#\(*!&10987" 
value = System.Security.SecurityElement.Escape(value); 

這將逸出XML屬性值是無效字符。

+0

不錯,但並沒有擺脫\ 0。 – spender 2010-07-08 23:58:23