未定义的实体和XML解析exception

我试图在声明中定义non breaking space entity 。 代码:

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" [  ] />  .. .... 

但是当我从上面的文档创建一个XDocument对象时,我得到一个例外

 Undefined entity &nbsp. 

我做错了什么?

首先, "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 ,其中包括这与你的完全一样。

那个位应该只是:

  

其次,XDocument默认不对DTD进行validation。 但是,您可以使用适当的设置从XmlValidatingReaderXmlTextReader Load

如果可能的话, [如果不可能,那就让它成为可能!]将XmlReader设置为使用XmlPreloadedResolver是一个好主意,因为有很多人在该DTD的URI和它包含的.ent文件中击中了糟糕的’W3C’,并且他们完全可以使用它的本地副本(“完全没问题”,我的意思是如果每个人都停止锤击他们的服务器,他们真的很高兴)。 除了对他们有益之外,它对你来说要快得多。

您可以尝试使用此实体  代替。