503 (сервер недоступен) WebException при загрузке локального файла XHTML
-
04-10-2019 - |
Вопрос
Так что в настоящее время я работаю над приложением для читателя EPUB, и я читал через кучу обычных файлов XML, просто отлично с помощью System.xml и XMLDocument:
XmlDocument xmldoc = new XmlDocument();
xmldoc.Load(Path.Combine(Directory.GetCurrentDirectory(), "META-INF/container.xml"));
XmlNodeList xnl = xmldoc.GetElementsByTagName("rootfile");
Однако теперь я пытаюсь открыть файлы XHTML, которые содержат фактический текст книги, и они файлы XTML. Теперь я на самом деле не знаю разницу между ними, но я получаю следующую ошибку с этим кодом (в том же документе, используя один и тот же XMLDocument и XMLnodelist.
xmldoc.Load(Path.Combine(Directory.GetCurrentDirectory(), "OEBPS/part1.xhtml"));
«WebException был неработал: удаленный сервер вернул ошибку: (503) сервер недоступен»
Это местный документ, поэтому я не понимаю, почему он дает эту ошибку? Любая помощь будет очень ценится. :)
У меня здесь полный исходный код, если он поможет:http://drop.io/upubtest.
(Я знаю ePubConstructor.ParseDocument()
Метод ужасно грязный, я просто пытаюсь заставить его работать на данный момент, прежде чем разделить его на классы)
Решение
Попробуйте следующий непроверенный код:
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);
}
Другие советы
Попробуйте удалить DOCTYPE из файла XHTML, возможно, у вас есть ссылка на внешний DTD.
Попробуйте следующий код:
XMLDocument XMLDOC = новый XMLDocument ();
doc.xmlresolver = null; // это игнорирует DTD
xmldoc.load (path.combine (directory.getcurrentDirectory (), "meta-inf / contacter.xml"));
XMLNodelist xnl = xmldoc.getelementsbytagname («rootfile»);