503(服务器不可用)加载本地XHTML文件时的WebException

时间:2010-05-22 01:09:48

标签: c# xml xhtml xmldocument system.net.webexception

所以我目前正在开发一个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文件,它们是XHTML文件。现在我真的不知道两者之间的区别,但我在这段代码中遇到以下错误(在同一文档中,使用相同的XmlDocument和XmlNodeList变量)

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

“WebException未处理:远程服务器返回错误:(503)服务器不可用”

这是一个本地文档,所以我不明白它为什么会出现这个错误?任何帮助将不胜感激。 :)

如果有帮助,我在这里有完整的源代码: http://drop.io/epubtest

(我知道ePubConstructor.ParseDocument()方法非常混乱,我只是想把它分解成类之前的那一刻才开始工作)

3 个答案:

答案 0 :(得分:2)

尝试从XHTML文件中删除DOCTYPE,可能您已链接到外部DTD。

答案 1 :(得分:0)

尝试以下未经测试的代码:

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

答案 2 :(得分:0)

请尝试以下代码:

XmlDocument xmldoc = new XmlDocument();

doc.XmlResolver = null; //这会忽略DTD

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

XmlNodeList xnl = xmldoc.GetElementsByTagName(“rootfile”);