Question

Je travaille actuellement sur une application de lecture ePub, et je l'ai lu à travers un tas de fichiers XML réguliers très bien avec System.Xml et XmlDocument:

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

Cependant, maintenant je suis en train d'ouvrir les fichiers XHTML qui contiennent le texte du livre réel, et ils sont des fichiers XHTML. Maintenant, je ne sais pas vraiment la différence entre les deux, mais je reçois l'erreur suivante avec ce code (dans le même document, en utilisant la même XmlDocument et variable XmlNodeList)

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

"WebException a été Unhandled: Le serveur distant a renvoyé une erreur: (503) Serveur non disponible"

Il est un document local, donc je ne comprends pas pourquoi il donne cette erreur? Toute aide serait grandement appréciée. :)

J'ai le code source complet ici si elle aide: http://drop.io/epubtest

(Je sais que la méthode ePubConstructor.ParseDocument() est horriblement désordre, je suis juste en train de le faire fonctionner au moment avant de le diviser en classes)

Était-ce utile?

La solution

Essayez le code non testé suivant:

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);
}

Autres conseils

Essayez de supprimer le DOCTYPE du fichier XHTML, vous avez probablement lien vers une DTD externe.

Essayez le code suivant:

XmlDocument xmldoc = new XmlDocument ();

doc.XmlResolver = null; // cela ne tient pas la DTD

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

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top