我从以下代码块中得到以下异常.
解析EntityName时发生错误.第1行,位置844.
我试图将从表中检索到的数据集解析为数据集.
public DataSet BindMasterData(string xml)
{
DataSet ds = null;
try
{
ds = new DataSet();
TextReader txtReader = new StringReader(xml);
XmlReader reader = new XmlTextReader(txtReader);
ds.ReadXml(reader);
}
catch (Exception ex)
{
return new DataSet();
}
return ds;
}
Run Code Online (Sandbox Code Playgroud)
我已经找出了异常的原因,但我无法解决它.在这种特殊情况下,字符串(从DB检索)包含一个特殊字符(&).这导致例外.我怎么解决它.对此的任何帮助都会很棒.
谢谢你,塞巴斯蒂安
Bas*_*ili 65
只需更换它们:
在XML元素中无效:
" "
' '
< <
> >
& &
Run Code Online (Sandbox Code Playgroud)
public static string UnescapeXMLValue(string xmlString)
{
if (xmlString == null)
throw new ArgumentNullException("xmlString")
return xmlString.Replace("'", "'").Replace(""", "\"").Replace(">", ">").Replace("<", "<").Replace("&", "&");
}
public static string EscapeXMLValue(string xmlString)
{
if (xmlString == null)
throw new ArgumentNullException("xmlString")
return xmlString.Replace("'","'").Replace( "\"", """).Replace(">",">").Replace( "<","<").Replace( "&","&");
}
Run Code Online (Sandbox Code Playgroud)
Ala*_*air 17
这已经得到了回答,但是通过使用Escape方法在.NET 4.5中实现相同的结果找到了更好的方法,如下所示:
var xmlWithEscapedCharacters = SecurityElement.Escape(xmlWithoutEscapedCharacters);
Run Code Online (Sandbox Code Playgroud)
然后只需将该字符串插入正在生成的XML中.
链接:MSDN - SecurityElement.Escape方法