C# 未定义实体&;nbsp XML解析异常
我试图在C# 未定义实体&;nbsp XML解析异常,c#,xml,C#,Xml,我试图在声明中定义非中断空格实体。代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" [ <!ENTITY nbsp " "> ] /> <html xmlns="http://www.w3.org/1999/xhtml"> ..
声明中定义非中断空格实体。代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" [ <!ENTITY nbsp " "> ] />
<html xmlns="http://www.w3.org/1999/xhtml">
.. ....
我做错了什么?您可以尝试使用此实体 代码>取而代之。首先,《代码》中外部实体和内部实体的组合http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" [ ]因为http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd
包括www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent
,其中包括与您的完全相同的
因此,该位应为:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
其次,默认情况下,XDocument不会验证为DTD。但是,您可以使用适当的设置从XmlValidatingReader
或XmlTextReader
加载
如果可能的话,[如果不可能,那就让它成为可能吧!]设置XmlReader使用XMLPreloadeResolver
,这是一个好主意,因为有很多人在DTD和它包含的.ent文件的URI上点击了糟糕的ol'W3C,他们完全同意您使用它的本地副本(通过“完全同意”我的意思是,如果每个人都不再对他们的服务器进行如此猛烈的攻击,他们会非常高兴)。这不仅对他们有好处,对你来说也会快得多
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">