.net 配置文件 分析 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);
出错就出在
这一句,其中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>
即将"&"替换为"&"即可。
**********************************************************************
原因分析:
在涉及到xml编与xslt程的过程中,忽略了xml中特殊符号表示的方法。
下表列出了这些特殊字符并描述了它们的含义。有关更多信息,请参见 XML 1.0 规范 中的 XML 1.0 规范。
特殊字符 特殊含义 实体编码
> 开始标记 >
< 结束标记 <
" 引号 "
' 撇号 '
& "&"符号 &