对未声明实体的引用';nbsp';在c#中从URL读取xml时?

对未声明实体的引用';nbsp';在c#中从URL读取xml时?,c#,.net,xml,C#,.net,Xml,上面是我用来读取XML文件的代码。我正在加载的XML包含nbsp因此,代码引发了一个XMLException: 对未申报实体“nbsp”的引用 有两种方法可以处理此问题,但对于这两种方法,您都需要对输入文件进行更改。 1) 将您的更改为 在您的输入文件中。最好使用Unicode并避免XML文档中的可读实体。使用普通Unicode字符或其数字形式 2) 如果您仍然需要/想要使用 您可以在文件中声明一个自定义doctype,该文件将为您执行转换: XmlDocument xmldoc

上面是我用来读取XML文件的代码。我正在加载的XML包含
nbsp因此,代码引发了一个XMLException:

对未申报实体“nbsp”的引用


有两种方法可以处理此问题,但对于这两种方法,您都需要对输入文件进行更改。

1) 将您的
更改为
 在您的输入文件中。最好使用Unicode并避免XML文档中的可读实体。使用普通Unicode字符或其数字形式

2) 如果您仍然需要/想要使用
您可以在文件中声明一个自定义doctype,该文件将为您执行转换:

    XmlDocument xmldoc = new XmlDocument();
    xmldoc.XmlResolver = null;

    xmldoc.Load("URL");
    XmlWriter xmlWrite = XmlWriter.Create(@Server.MapPath("Test.xml"));
    xmldoc.Save(xmlWrite);
    xmlWrite.Close();


这个问题的出现是因为
不是XMLs预定义的实体之一。

我今天遇到了同样的问题,我可以通过将HTML实体名称更改为HTML实体编号来解决它

根据,我能够修复这个错误

XML中不支持HTML实体名称。这就是为什么“非中断空间”--“nbsp”--会触发这个令人沮丧的错误

解决此问题的最简单方法是使用HTML实体编号,这意味着将
更改为
 

有关包含名称和编号的HTML实体的综合列表,请参阅:


;nbsp如果你不想记住什么
 的意思是。

您没有想到HTML命名的实体可能是HTML的东西,因此与XML无关?;-)当然,但问题是我在一个不同团队开发的web应用程序中工作,我的选择非常有限。他们构建了一个系统,无论出于何种原因,都可以在HTML和XML之间切换。所以,我适应了。灌木请不要使用W3学校作为参考-这不是官方来源。取而代之的是使用实体的官方来源:谢谢,迪玛。我已经更新了我的答案,加入了W3C链接。我认为W3Schools链接仍然有用,所以我保持了它的完整性;
<!DOCTYPE doctypeName [
   <!ENTITY nbsp "&#160;">
]>