今天用C#读写XML文档,总出现下面的错误:

分析 EntityName 时出错。行1,位置9。

出错地方的源程序为:

//......
pathEle.InnerXml = reducedStr(videoPath, RootDirDirecotry + "\\");
videoInfoEle.AppendChild(pathEle);
XmlElement urlEle = combineXml.CreateElement("VideoPageUrl");
urlEle.InnerXml = VideoUrl;
videoInfoEle.AppendChild(urlEle);

出错就出在

这一句,其中VideoUrl是一个URL地址。

经过搜索发现,是因为此地址中包含了一个“&”符号:

http://v.youku.com/v_show/id_XODIxNTIwODQw.html?f=23050445&from=y1.3-paike-grid-4071-10195.90404-90171.5-1

解决方法为:

pathEle.InnerXml = reducedStr(videoPath, RootDirDirecotry + "\\");
videoInfoEle.AppendChild(pathEle);
XmlElement urlEle = combineXml.CreateElement("VideoPageUrl");
string tmpVideoUrl = videoUrl;
if (tmpVideoUrl.Contains("&") || tmpVideoUrl.Contains("<") || tmpVideoUrl.Contains(">") || tmpVideoUrl.Contains("\"") || tmpVideoUrl.Contains("\'"))
{
tmpVideoUrl = tmpVideoUrl.Replace("&","&");
tmpVideoUrl = tmpVideoUrl.Replace("<","<");
tmpVideoUrl = tmpVideoUrl.Replace(">",">");
tmpVideoUrl = tmpVideoUrl.Replace("\"",""");
tmpVideoUrl = tmpVideoUrl.Replace("\'","'");
}
urlEle.InnerXml = tmpVideoUrl;
videoInfoEle.AppendChild(urlEle);</span></span>

即将"&"替换为"&amp;"即可。

**********************************************************************

原因分析:

在涉及到xml编与xslt程的过程中,忽略了xml中特殊符号表示的方法。

下表列出了这些特殊字符并描述了它们的含义。有关更多信息,请参见 XML 1.0 规范 中的 XML 1.0 规范。

特殊字符 特殊含义     实体编码

>             开始标记       &gt;

<             结束标记       &lt;

"              引号             &quot;

'               撇号             &apos;

&            "&"符号         &amp;

05-11 11:37