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