在c#中从URL读取xml时引用未声明的实体’nbsp’?
XmlDocument xmldoc = new XmlDocument(); xmldoc.XmlResolver = null; xmldoc.Load("URL"); XmlWriter xmlWrite = XmlWriter.Create(@Server.MapPath("Test.xml")); xmldoc.Save(xmlWrite); xmlWrite.Close();
上面是我用来读取XML文件的代码。 我加载的XML包含实体,如nbsp;
因此,代码抛出了一个XMLException:
参考未申报的实体’nbsp’
有两种方法可以解决这个问题,但是对于这两种方法,您需要对输入文件进行更改。
1)改变你的
到
在你输入文件。 使用Unicode总是更好,并避免XML文档中的可读实体。 使用纯Unicode字符或其数字forms。
2)如果您仍然需要/想要使用
您可以在将为您进行转换的文件中声明自定义文档类型:
]>
这个问题即将到来,因为
不是XML预定义实体之一。
我今天遇到了同样的问题,我可以通过将HTML实体名称更改为HTML实体编号来解决它。
根据这个有用的论坛post ,我能够修复此错误。
XML中不支持HTML实体名称。 这就是为什么“不间断的空间” – “nbsp” – 触发了这个令人沮丧的错误。
解决此问题的最简单方法是使用HTML实体编号,这意味着更改
到
。
有关具有名称和数字的HTML实体的完整列表,请参阅:
W3 School的HTML实体参考页面 。
关于实体集的官方W3C页面 。