xml文件的特殊字符有5个:< > & " '  

xml解析器会对xml中所有值进行解析,所以xml文件某些值含有特殊字符时,就需要对该值进行处理,否则会报错。

 

当xml文件中某节点中放置了包含<或者&字符的值时,此时xml文件或报错,例如:

<Name>aa < bb & cc</Name>

为了避免此类错误,需要把非法字符 "<" 和字符"&"替换为实体引用 :

<Name>aa &lt; bb &amp; cc</Name>

 

在xml中有5个预定义的实体引用(entity reference):

 

特殊符号 实体引用 XML中的含义  
< &lt; 新元素的开始 小于号
> &gt;   大于号
& &amp; 字符实体的开始 逻辑与
" &quot;   双引号
' &apos;   单引号

注意:只有"<"和"&",对于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("&", "&amp;");
        xmlStr = xmlStr.Replace("<", "&lt;");
        xmlStr = xmlStr.Replace(">", "&gt;");
        xmlStr = xmlStr.Replace("\"", "&quot;");
        xmlStr = xmlStr.Replace("\'", "&apos;");
    }

    return xmlStr ;

  }

 

生成xml文件并保存到本地请参照我上一篇随笔:c#生成xml文件并保存到本地

posted on 2016-08-03 13:39  CarrieJ  阅读(7253)  评论(0编辑  收藏  举报