Ссылка на необъявленный объект "nbsp" при чтении xml из URL-адреса в С#?
XmlDocument xmldoc = new XmlDocument();
xmldoc.XmlResolver = null;
xmldoc.Load("URL");
XmlWriter xmlWrite = XmlWriter.Create(@Server.MapPath("Test.xml"));
xmldoc.Save(xmlWrite);
xmlWrite.Close();
Выше приведен код, который я использую для чтения XML файла. Загружаемый XML файл содержит такие объекты, как nbsp;
, и из-за этого код бросает XMLException:
Ссылка на необъявленный объект 'nbsp'
Ответы
Ответ 1
Есть два способа справиться с этим, но для обоих вам нужно внести изменения во входной файл.
1) Измените
на  
во входных файлах. Всегда лучше использовать Unicode и избегать считываемых объектов в XML-документах. Используйте простые символы Unicode или их числовую форму.
2) Если вам все еще нужно/нужно использовать
Вы можете объявить пользовательский тип doctype в файле, который сделает для вас преобразование:
<!DOCTYPE doctypeName [
<!ENTITY nbsp " ">
]>
Эта проблема возникает, потому что
не является одним из предопределенных сущностей XML.
Ответ 2
У меня была такая же проблема сегодня, и я смог решить ее с помощью смены имени объекта HTML на номер сущности HTML.
Per этот полезный пост форума, я смог исправить эту ошибку.
Имена сущностей HTML в XML не поддерживаются. Вот почему "неразрушающее пространство" - "nbsp" - вызывает эту разочаровывающую ошибку.
Самый простой способ исправить эту проблему - использовать номера объектов HTML, что означает изменение
до  
.
Полный список объектов HTML с именами и номерами см. в разделе
Страница ссылок HTML HTML HTML.
Официальная страница W3C на наборах объектов.