Как разрешить локальные DTD без System.Xml.Utils.Dll(XmlPreloadedResolver)?

Я использую внешний DTD для проверки моих XML-файлов. Поскольку XmlReader, кажется, ищет DTD только в папке, где находится файл xml, мне нужно как-то сказать читателю, чтобы он заглянул в конкретную папку, где находятся мои dtd.

Я использую XmlPreloadedResolver для решения этой проблемы, но не могу найти System.Xml.Utils.Dll в GAC. Разве это не стандартная сборка .NET framework?

РЕДАКТИРОВАТЬ: кажется, что эта DLL полагается на установку Silverlight. Есть ли другой способ использовать dtd для проверки, который находится в другой папке, чем сам файл xml?


person codymanix    schedule 06.01.2010    source источник


Ответы (3)


System.Xml.Utils.dll не является частью стандартной .NET Framework. Он входит в состав Silverlight SDK. Если вы еще не установили его, вы можете сделать это отсюда: http://www.microsoft.com/downloads/details.aspx?FamilyID=1ea49236-0de7-41b1-81c8-a126ff39975b&displaylang=en

После его установки сборка, на которую вы хотите сослаться в своем проекте, будет находиться в папке %PROGRAMFILES%\Microsoft SDKs\Silverlight\v3.0\Libraries\Client\.

Эта сборка включает класс System.Xml.Resolvers.XmlPreloadedResolver.

person Saul Dolgin    schedule 06.01.2010

Согласно этой статье, System.Xml.Utils.dll является "необязательным и будет включено в пакет (XAP) в зависимости от использования".

Кажется, эта сборка связана с Silverlight; на моей машине я просто нашел его в каталогах %ProgramFiles%\Microsoft SDKs\Silverlight\v?.0\Libraries\Client

person Rubens Farias    schedule 06.01.2010
comment
Итак, если у меня нет Silverlight, мои файлы DTD всегда должны находиться в той же папке, где находятся файлы xml? - person codymanix; 06.01.2010

.netfx 4.0 включает XmlPreloadedResolver в System.Xml.dll. См. http://msdn.microsoft.com/en-us/library/system.xml.resolvers.xmlpreloadedresolver.aspx для получения подробной информации.

person Mollman    schedule 12.08.2010