Pregunta

Así que estoy actualmente trabajando en una aplicación de lector de ePub, y he estado leyendo a través de un montón de archivos XML regulares muy bien con System.XML y XmlDocument:

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

Sin embargo, ahora estoy tratando de abrir los archivos XHTML que contienen el texto libro real, y son archivos XHTML. Ahora bien, no se sabe muy bien la diferencia entre los dos, pero yo estoy recibiendo el siguiente error con el código (en el mismo documento, utilizando el mismo XmlDocument y variables XmlNodeList)

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

"WebException fue no controlada: El servidor remoto devolvió un error: (503) de servidor no disponible"

Es un documento local, así que no estoy entendiendo por qué se da este error? Cualquier ayuda sería muy apreciada. :)

Tengo el código fuente completo aquí si ayuda: http://drop.io/epubtest

(sé el método ePubConstructor.ParseDocument() es terriblemente desordenado, sólo estoy tratando de conseguir que funcione en el momento antes de dividirlo en clases)

¿Fue útil?

Solución

Pruebe el siguiente código no probado:

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

Otros consejos

Trate de eliminar el DOCTYPE del archivo XHTML, probablemente usted tiene un enlace a una DTD externa.

Pruebe el siguiente código:

xmldoc XmlDocument = new XmlDocument ();

doc.XmlResolver = null; // esto ignora el DTD

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

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top