解析 EntityName 时出错
Posted
技术标签:
【中文标题】解析 EntityName 时出错【英文标题】:An error occurred while parsing EntityName 【发布时间】:2010-10-16 14:05:06 【问题描述】:我正在尝试将 xml 文档加载到 C# 中的对象 XPathDocument 中。 我的 xml 文档包括这一行: trés dégagée + rade 当解析器到达那里时,它给了我这个错误: “” 我知道这是字符“é”的正常原因。有谁知道我怎样才能避免这个错误......我的想法是在 xml 文档中插入一个实体声明,然后用实体替换所有特殊字符......但它很长,我不确定它是否有效。你有其他想法吗?更简单? 非常感谢
【问题讨论】:
如果您显示用于执行加载的代码会有所帮助。 【参考方案1】:正要发布这个,然后服务器就宕机了。我想我已经根据记忆正确地重写了它:
我认为问题在于默认情况下XPathDocument
使用XmlTextReader
来解析提供的文件的内容,而这个XmlTextReader
使用EntityHandling
设置ExpandEntities
。
换句话说,当您依赖默认设置时,XmlTextReader
将验证输入 XML 并尝试解析所有实体。更好的方法是通过完全控制XmlReaderSettings
手动执行此操作(我总是手动执行此操作):
string myXMLFile = "SomeFile.xml";
string fileContent = LoadXML(myXMLFile);
private string LoadXML(string xml)
XPathDocument xDoc;
XmlReaderSettings xrs = new XmlReaderSettings();
// The following line does the "magic".
xrs.CheckCharacters = false;
using (XmlReader xr = XmlReader.Create(xml, xrs))
xDoc = new XPathDocument(xr);
if (xDoc != null)
XPathNavigator xNav = xDoc.CreateNavigator();
return xNav.OuterXml;
else
// Unable to load file
return null;
【讨论】:
【参考方案2】:这通常是由于用于读取文件的编码与实际编码的文件不匹配造成的。
我猜我会说该文件是 UTF-8 编码的,但您正在使用默认编码读取它。
尝试用更多细节来加强你的问题以获得更明确的答案。
【讨论】:
以上是关于解析 EntityName 时出错的主要内容,如果未能解决你的问题,请参考以下文章
XmlDocument.Load()加载xml文件时,提示分析 EntityName 时出错的问题。
MagicalRecord 在 ios 8.1 的第一次运行时崩溃
InterfaceError:错误绑定参数0 - 运行我的django脚本时可能不支持的类型
在 MikroORM 中创建迁移时,如何解决“请在 EntityName.id 中提供 'type' 或 'entity' 属性”错误?