Référence à l'entité non déclarée 'nbsp' lors de la lecture de xml à partir de L'URL dans c#?

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

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

ci-dessus est le code que j'utilise pour lire un fichier XML. Le XML que je charge contient des entités comme nbsp; et pour cette raison, le code lance une XMLException:

référence à l'entité non déclarée 'nbsp'

21
demandé sur Jon Schneider 2013-03-29 14:46:51

2 réponses

il y a deux façons de gérer cela, mais pour les deux vous devez apporter des modifications au fichier d'entrée.

1) Changez votre    en vous fichiers d'entrée. Il est toujours préférable d'utiliser Unicode et d'éviter les entités lisibles dans les documents XML. Utilisez des caractères Unicode simples ou leur forme numérique.

2) Si vous avez encore besoin/envie d'utiliser   Vous pouvez déclarer un doctype personnalisé dans le fichier qui fera la conversion pour vous:

<!DOCTYPE doctypeName [
   <!ENTITY nbsp "&#160;">
]> 

ce le problème est venue parce que &nbsp; n'est pas une des entités prédéfinies de XMLs.

46
répondu Raman 2013-03-29 11:10:12

j'ai eu ce même problème aujourd'hui, et j'ai pu le résoudre en changer le nom de L'entité HTML en un numéro D'entité HTML.

Par ce utile de post sur le forum, j'ai pu corriger cette erreur.

les noms D'entités HTML ne sont pas bien pris en charge dans XML. C'est pourquoi le "espace insécable"--"nbsp"--déclenche cette frustrant d'erreur.

la façon la plus simple de corriger ce problème est d'utiliser les numéros D'entité HTML, ce qui signifie changer &nbsp; pour &#160;.

pour une liste complète des entités HTML avec noms et numéros, voir:

page de référence de L'entité HTML de L'École du W3.

Page officielle du W3C sur les ensembles D'Entity.

8
répondu Kevin Lee Garner 2015-07-23 18:09:23