【问题标题】:Why I get An error occurred while parsing EntityName when I try to load xml file?为什么我在尝试加载 xml 文件时解析 EntityName 时出现错误?
【发布时间】:2017-05-21 21:55:09
【问题描述】:

我有这个 xml 数据

<Categories>
    <cat name="Appliances"></cat>
    <cat name="Arts, Crafts & Sewing"></cat>
    <cat name="Automotive"></cat>
    <cat name="Baby"></cat>
</Categories>

我使用此代码将数据读入组合框:

XmlDocument xDoc = new XmlDocument();
xDoc.Load("cat.xml");
XmlNodeList cats = xDoc.GetElementsByTagName("cat");
for (int i = 0; i < cats.Count; i++)
{
   comboBox1.Items.Add(cats[i].Attributes["name"].InnerText);
}

但在xDoc.Load("cat.xml"); 行出现错误:

“System.Xml.XmlException”类型的未处理异常发生在 System.Xml.dll 解析 EntityName 时出错。 3号线, 第 30 位。

这是什么意思?

【问题讨论】:

标签: c# xml winforms


【解决方案1】:

您的 xml 包含一个使其无效的 & 符号,请在解析之前尝试此操作

var xmlContent = File.ReadAllText("cat.xml");
XmlDocument xDoc = new XmlDocument();
xDoc.LoadXml(xmlContent.Replace("&", "&amp;"));

【讨论】:

  • 我试过xDoc.LoadXml(SecurityElement.Escape(xmlContent));,但我现在得到错误根级别的数据无效。第 1 行,位置 1。
  • @Wel 你不能在这里使用SecurityElement.Escape(这是来自@Alisson 的错误编辑。我要删除它)因为它甚至会替换&lt;&gt; 但你只需要替换&符号。使用xmlContent.Replace("&amp;", "&amp;amp;")
猜你喜欢
  • 1970-01-01
  • 2013-05-31
  • 1970-01-01
  • 2019-08-03
  • 1970-01-01
  • 1970-01-01
  • 2010-10-16
  • 2021-05-01
  • 1970-01-01
相关资源
最近更新 更多