Frage

So arbeite ich derzeit an einer ePub-Reader-Anwendung, und ich habe mit System.Xml und XmlDocument ganz gut durch ein Bündel von regelmäßigen XML-Dateien zu lesen:

XmlDocument xmldoc = new XmlDocument();
xmldoc.Load(Path.Combine(Directory.GetCurrentDirectory(), "META-INF/container.xml"));
XmlNodeList xnl = xmldoc.GetElementsByTagName("rootfile");

Aber jetzt Ich versuche, die XHTML-Dateien zu öffnen, die den eigentlichen Buch Text enthalten, und sie sind XHTML-Dateien. Nun weiß ich nicht wirklich den Unterschied zwischen den beiden, aber ich bin immer die folgende Fehlermeldung mit diesem Code (im selben Dokument, mit dem gleichen XmlDocument und XmlNodeList Variable)

xmldoc.Load(Path.Combine(Directory.GetCurrentDirectory(), "OEBPS/part1.xhtml"));

"WebException unhandled wurde: Der Remoteserver hat einen Fehler zurückgegeben: (503) Server nicht verfügbar"

Es ist ein lokales Dokument, so dass ich nicht bin zu verstehen, warum es diesen Fehler geben? Jede Hilfe wäre sehr geschätzt. :)

Ich habe den vollständigen Quellcode hier bekam, wenn es hilft: http://drop.io/epubtest

(Ich weiß, die ePubConstructor.ParseDocument() Methode schrecklich unordentlich ist, ich versuche nur, um es im Moment arbeiten, bevor ich es in Klassen aufgeteilt)

War es hilfreich?

Lösung

Versuchen Sie, die folgenden ungetesteten Code:

XmlDocument xmldoc = new XmlDocument(); 
XmlReaderSettings settings = new XmlReaderSettings
{
    XmlResolver = new XmlUrlResolver()
};
using (var reader = XmlReader.Create(
    Path.Combine(Directory.GetCurrentDirectory(), 
                 "OEBPS/part1.xhtml"), settings))
{
    xmlDoc.Load(reader);
}

Andere Tipps

Versuchen Sie, die DOCTYPE aus der XHTML-Datei zu entfernen, haben Sie wahrscheinlich Link auf eine externe DTD haben.

Versuchen Sie, den folgenden Code:

XmlDocument xmldoc = new XmlDocument ();

doc.XmlResolver = null; // dies die DTD ignoriert

xmldoc.Load (Path.Combine (Directory.GetCurrentDirectory () "META-INF / container.xml"));

XmlNodeList XNL = xmldoc.GetElementsByTagName ( "rootfile");

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top