我从下面的代码块中得到了以下异常。
分析EntityName时出错。Line1,位置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;
}
我已经找出了异常的原因,但我不能解决它。在这种特殊情况下,字符串(从DB检索)包含一个特殊字符(&)。这会导致异常。我怎么才能解决它。这方面的任何帮助都是很好的。
发布于 2014-05-08 20:43:18
只需替换它们:
在XML元素中无效:
" "
' '
< <
> >
& &
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( "&","&");
}
发布于 2014-12-18 17:10:58
这个问题已经得到了回答,但在.NET 4.5中,通过使用如下的Escape方法来实现相同的结果,找到了一种更好的方法:
var xmlWithEscapedCharacters = SecurityElement.Escape(xmlWithoutEscapedCharacters);
然后将该字符串插入正在生成的XML中。
发布于 2014-05-08 20:37:10
如果您的XML是用字符串连接构造的,那么您可能希望对其进行转义。&
应该变成&
,而<
和>
应该分别变成<
和>
。
也许还会有其他的。当然,您真的应该使用合适的XML编码器,而不是出于许多原因自己尝试这样做。
https://stackoverflow.com/questions/23541910
复制相似问题