2008-10-27 5 views

ответ

0

См http://todotnet.com/archive/2006/07/27/8248.aspx

Поскольку в строительстве XPathDocument, есть HTTP GET команды, чтобы увидеть, если он может получить доступ к DTD. Это ничего не делает с DTD . Это на всякий случай. Итак, в то время как XPathDocument изначально настроен на , будет более быстрой альтернативой XmlDocument, у вас будут дополнительные дополнительные служебные данные HTTP-запроса , которые необходимо решить. Представьте , что сервер находится на другой стороне земного шара!

1

Вы можете написать собственный XmlUrlResolver, а затем проигнорировать дистанционное DTD . Кроме того, я считаю, что вы можете установить XmlResolver = null в XmlTextReader.

+0

Но MSDN должен четко указать это может произойти. Глядя на XPathDocument, вы не можете сказать, что он будет искать DTD в Интернете. И почему исключение выбрано? Если DTD не нужен - работает офлайн, не так ли? Спасибо за предложения в любом случае - я попробую их в следующий раз! – Goran 2008-10-28 07:22:31

1

для тех, кто заинтересован, я нашел обходной путь, чтобы отключить проверку Dtd

XmlReaderSettings settings = new XmlReaderSettings(); 
settings.XmlResolver = null; 
settings.ProhibitDtd = false; 

var xmlReader = XmlTextReader.Create(new StringReader(xmlString),settings); 
XPathDocument xpathDoc = new XPathDocument(xmlReader); 
Смежные вопросы