Référence non déclarées entité exception lors de l'utilisation du XML
Je suis en train de mettre la innerxml d'un xmldoc, mais à obtenir de l'exception: la Référence non déclarées entité
XmlDocument xmldoc = new XmlDocument();
string text = "Hello, I am text α – —"
xmldoc.InnerXml = "<p>" + text + "</p>";
Cela lève l'exception:
De référence non déclarées entité "alpha". Ligne 2, la position 2..
Comment puis-je résoudre ce problème?
Vous devez vous connecter pour publier un commentaire.
XML, à la différence du HTML ne permet pas de définir des entités (ie nommé références de caractères UNICODE) donc α — etc. ne sont pas traduits à leur caractère correspondant. Vous devez utiliser la valeur numérique à la place. Vous ne pouvez utiliser < et & en XML
Si vous souhaitez générer du HTML, utiliser un HtmlDocument à la place.
Dans .Net, vous pouvez utiliser le
System.Xml.XmlConvert
classe:Alternativement, vous pouvez déclarer les entités localement en mettant les déclarations entre crochets dans une déclaration DOCTYPE. Ajouter l'en-tête suivant à votre xml:
Faire un google sur "les entités html" pour les définitions d'entités.
Essayez de remplacer le &Alpha avec
La réponse à la question précédente est droit. Une autre alternative est de lier votre document html pour la DTD où ces entités de caractères sont définies, et qui est le standard XHTML DTD définition. Le fichier xml doit inclure la déclaration suivante:
Vous pouvez également définir la InnerText à
"Hello, I am text α – —"
, faisant de la XmlDocument échapper automatiquement. Je pense qu'.L'utilisation d'un HtmlDocument n'était pas adapté à ma situation, notre système avait un XmlUrlResolver personnalisé dont nous avons fait usage de pour le chargement du xml.
Utilisation de la chaîne du Système.Net.WebUtility.HtmlDecode(string) qui permettra de décoder toutes les entités HTML caractères codés à ses Unicode variante. Il est disponible à partir de dot.net cadre 4
Si vous voulez utiliser le HTML noms d'entité que vous êtes habitué à, le W3C a pensé à vous et a produit "Entité XML Définitions pour les Personnages" http://www.w3.org/TR/xml-entity-names/, qui est essentiellement une liste d'entités nommées très semblables à celles que le HTML. Mais comme mentionné ci-dessus, ce n'est pas construite en XML, et doit être explicitement pris en charge par les applications XML qui veulent utiliser ces entités nommées.