xml文件的特殊字符有5個:< > & " '
xml解析器會對xml中所有值進行解析,所以xml文件某些值含有特殊字符時,就需要對該值進行處理,否則會報錯。
當xml文件中某節點中放置了包含<或者&字符的值時,此時xml文件或報錯,例如:
<Name>aa < bb & cc</Name>
為了避免此類錯誤,需要把非法字符 "<" 和字符"&"替換為實體引用 :
<Name>aa < bb & cc</Name>
在xml中有5個預定義的實體引用(entity reference):
| 特殊符號 | 實體引用 | XML中的含義 | |
| < | < | 新元素的開始 | 小於號 |
| > | > | 大於號 | |
| & | & | 字符實體的開始 | 邏輯與 |
| " | " | 雙引號 | |
| ' | ' | 單引號 |
注意:只有"<"和"&",對於xml來說是嚴格禁止使用的。引號和大於號是合法的,但是把它們替換為實體引用是個好的習慣。
下面的函數用於把特殊字符轉換為實體引用
public static string EncodeXml(string xmlStr) {
if (string.IsNullOrEmpty(xmlStr))
return "";
if (xmlStr.Contains("&") || xmlStr.Contains("<") || xmlStr.Contains(">") || xmlStr.Contains("\"") || xmlStr.Contains("\'"))
{
xmlStr = xmlStr.Replace("&", "&");
xmlStr = xmlStr.Replace("<", "<");
xmlStr = xmlStr.Replace(">", ">");
xmlStr = xmlStr.Replace("\"", """);
xmlStr = xmlStr.Replace("\'", "'");
}
return xmlStr ;
}
生成xml文件並保存到本地請參照我上一篇隨筆:c#生成xml文件並保存到本地
