Произошла ошибка при открытии внешнего DTD (w3.org, xhtml1-transitional.dtd). 503 Сервер недоступен

Я пытаюсь делать запросы xpath к документу xhtml. Использование .NET 3.5.

Документ выглядит так:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html lang="en" xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
  <head>
   ....
  </head>
  <body>
    ...
  </body>
</html>

Поскольку документ включает в себя различные сущности символов (&nbsp; и так далее), мне нужно использовать DTD, чтобы загрузить его сXmlReader, Итак, мой код выглядит так:

var s = File.OpenRead(fileToRead)
var reader = XmlReader.Create(s, new XmlReaderSettings{ ProhibitDtd=false });

Но когда я запускаю это, он возвращает

Произошла ошибка при открытии внешнего DTD 'http://www.w3.org/TR/xhtml1-transitional.dtd': Удаленный сервер возвратил ошибку: (503) сервер недоступен.

Теперь я знаюЗачем Я получаю ошибку 503.W3C объяснил это очень четко.

Я видел «обходные пути», когда люди просто отключали DTD. Это то, чтоProhibitDtd=true можно сделать, и это устраняет ошибку 503.

Но в моем случае это приводит к другим проблемам - приложение не получает определения сущности и, следовательно, не является правильно сформированным XML. Как я могу проверить с помощью DTD и получить определения сущностей, не заходя на сайт w3.org?

Я думаю, что .NET 4.0 имеет отличную встроенную возможность справиться с этой ситуацией:XmlPreloadedResolver, Но мне нужно решение для .NET 3.5.

связанные с:
- java.io.IOException: сервер вернул код ответа HTTP: 503

Ответы на вопрос(3)

Ваш ответ на вопрос