[英]An error occurred while parsing EntityName. Line1, position 844
我从下面的代码块中得到了以下异常。
解析 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;
}
我已经找出了异常的原因,但我无法解决它。 在这种特殊情况下,字符串(从 DB 检索)包含一个特殊字符 (&)。 这会导致异常。 我该如何解决。 对此的任何帮助都会很棒。
只需更换它们:
在 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( "&","&");
}
这已经得到了回答,但通过使用 Escape 方法在 .NET 4.5 中找到了一种更好的方法来实现相同的结果,如下所示:
var xmlWithEscapedCharacters = SecurityElement.Escape(xmlWithoutEscapedCharacters);
然后将该字符串插入正在生成的 XML 中。
如果您的 XML 是用字符串连接构造的,那么您将想要对其进行转义。 &
应该变成&
而<
和>
应该变成<
和>
分别。
可能还有其他人。 当然,您应该真正使用合适的 XML 编码器,而不是出于多种原因尝试自己进行编码。
由于数据来自某个数据库,因此可以在您描述的上下文中热修复问题,但我强烈建议采用不同的方法。 正如此处所讨论的,与符号一开始就不应该出现在 xml 中。 请阐明 xml 是如何生成的并解决那里的问题。
您可以使用: SecurityElement.Escape(XML string)
参考链接: https : //msdn.microsoft.com/en-us/library/system.security.securityelement.escape(v=vs.110).aspx
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.