четверг, 28 августа 2014 г.

XML: DOM - XmlDocument и исключение "невозможно разрешить удаленное имя"

Что делать, если происходит exception "невозможно разрешить удаленное имя" при открытии локального XML?

Ошибка происходит, если XmlDocument при отсутствии соединения пытается прочесть из интернета DTD, на который есть ссылка из XML, например такая:

<!DOCTYPE FBType SYSTEM "http://www.holobloc.com/xml/LibraryElement.dtd" >

После того, как проблема установлена, можно найти к ней решение: подключится к интернету или заставить XmlDocument не ходить в интернет за DTD. Для того, чтобы реализовать второй вариант, надо в свойствах XmlDocument, которые находятся в классе XmlReaderSettings поставить полю DtdProcessing значение DtdProcessing.Ignore и полю XmlResolver значение null. Под катом работающий пример.