Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Reference to undeclared entity 'nbsp' while reading xml from URL in c#?

Tags:

c#

.net

xml

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

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

Above is the code I am using to read an XML file. The XML I am loading contains entities like nbsp; and because of that, the code is throwing an XMLException:

Reference to undeclared entity 'nbsp'

like image 980
Mahipat Avatar asked Mar 29 '13 10:03

Mahipat


2 Answers

There are two ways to handle this, but for both you need to make changes to the input file.

1) Change your   to   in you input files. It is always better to use Unicode and avoid readable entities in XML documents. Use plain Unicode characters or their numerical form.

2) If you still need/want to use   You can declare a custom doctype in the file that will do the conversion for you:

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

This problem is coming because &nbsp; isn't one of XMLs predefined entities.

like image 145
Raman Avatar answered Sep 25 '22 23:09

Raman


I had this same problem today, and I was able to solve it by changing the HTML entity name to an HTML entity number.

Per this helpful forum post, I was able to fix this error.

HTML entity names are not well supported in XML. This is why the "nonbreaking space"--"nbsp"--triggers this frustrating error.

The easiest way to fix this issue is to use HTML entity numbers, which means changing &nbsp; to &#160;.

For a comprehensive listing of HTML entities with names and numbers, see:

W3 School's HTML Entity reference page.

Official W3C Page on Entity Sets.

like image 26
Kevin Lee Garner Avatar answered Sep 22 '22 23:09

Kevin Lee Garner