分析 EntityName 时出错


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

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

出错地方的源程序为:

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


出错就出在
urlEle.InnerXml = VideoUrl
这一句,其中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("&","&amp;");
      tmpVideoUrl = tmpVideoUrl.Replace("<","&lt;");
      tmpVideoUrl = tmpVideoUrl.Replace(">","&gt;");
      tmpVideoUrl = tmpVideoUrl.Replace("\"","&quot;");
      tmpVideoUrl = tmpVideoUrl.Replace("\'","&apos;");
   }
urlEle.InnerXml = tmpVideoUrl;
videoInfoEle.AppendChild(urlEle);</span></span>

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

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

原因分析:

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

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


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

>             开始标记       &gt;

<             结束标记       &lt;

"              引号             &quot;

'               撇号             &apos;

&            "&"符号         &amp;









猜你喜欢

转载自blog.csdn.net/Garfield2005/article/details/41048095
今日推荐