当前位置:  开发笔记 > 编程语言 > 正文

解析EntityName时发生错误

如何解决《解析EntityName时发生错误》经验,为你挑选了1个好方法。

我正在尝试将xml文档加载到C#中的对象XPathDocument中.我的xml文档包括以下行:trésdégagée+ rade,当解析器到达那里时,它给了我这个错误:"解析EntityName时出错"我知道这是字符"é"的正常原因.有谁知道我怎么能避免这个错误...我的想法是在xml文档中插入一个实体声明,并在用实体替换所有特殊字符后......但它很长,我不确定它是否正常工作.你有其他想法吗?更简单?非常感谢



1> Cerebrus..:

即将发布这个,然后服务器就崩溃了.我想我已经从记忆中正确地重写了它:

我认为问题在于,默认情况下,XPathDocument使用an 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;
}

推荐阅读
郑小蒜9299_941611_G
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有