Beim Öffnen der externen DTD (w3.org, xhtml1-transitional.dtd) ist ein Fehler aufgetreten. 503 Server nicht verfügbar

Ich versuche, xpath-Abfragen über ein xhtml-Dokument durchzuführen. Verwendung von .NET 3.5.

Das Dokument sieht folgendermaßen aus:

<!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>

Weil das Dokument verschiedene Zeicheneinheiten enthält &nbsp; und so weiter), ich muss die DTD verwenden, um sie mit einem @ zu lad XmlReader. Mein Code sieht also so aus:

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

Aber wenn ich das starte, gibt es @ zurü

Beim Öffnen der externen DTD ist ein Fehler aufgetreten. 'http: //www.w3.org/TR/xhtml1-transitional.dt ': Der Remote-Server hat einen Fehler zurückgegeben: (503) Server nicht verfügbar.

Jetzt weiß ichWaru Ich erhalte den 503-Fehler. W3C erklärte es sehr deutlich.

Ich habe "Workarounds" gesehen, bei denen die DTD einfach deaktiviert wurde. Das ist wasProhibitDtd=true kann, und es beseitigt den 503-Fehler.

Aber in meinem Fall führt das zu anderen Problemen - die App erhält nicht die Entitätsdefinitionen und ist daher nicht gut strukturiertes XML. Wie kann ich mit der DTD validieren und die Entitätsdefinitionen abrufen, ohne auf die Website w3.org zuzugreifen?

ch denke, .NET 4.0 verfügt über eine raffinierte integrierte Funktion, um mit dieser Situation umzugehen: das XmlPreloadedResolver. Aber ich brauche eine Lösung für .NET 3.5.

verbunden
- java.io.IOException: Server hat HTTP-Antwortcode zurückgegeben: 503

Antworten auf die Frage(3)

Ihre Antwort auf die Frage