【问题标题】:503 (Server Unavailable) WebException when loading local XHTML file503(服务器不可用)加载本地 XHTML 文件时出现 WebException
【发布时间】:2010-05-22 01:09:47
【问题描述】:

所以我目前正在开发一个 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) Server Unavailable”

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

如果有帮助,我会在此处获得完整的源代码: http://drop.io/epubtest

(我知道ePubConstructor.ParseDocument() 方法非常混乱,我只是想在我把它分成类之前让它工作)

【问题讨论】:

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


    【解决方案1】:

    尝试从 XHTML 文件中删除 DOCTYPE,可能您有指向外部 DTD 的链接。

    【讨论】:

    • 感谢您的回复!这确实有效,但是该程序的目的是获取这些现有文件并将其读入,因此我将无法从每个文件中手动删除 DOCTYPE 行。有没有办法可以把它拉进去,忽略那个标签?
    【解决方案2】:

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

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

    【讨论】:

    • 谢谢!我还从您的代码中找到了另一个建议,我可以只做xmldoc.XmlResolver = null;,这也可以。我不确定一个是否比另一个更可取,但您的代码非常有帮助! (另外你给了我使用 (var...) 的提示,这将帮助我清理我的代码)
    【解决方案3】:

    试试下面的代码:

    XmlDocument xmldoc = new XmlDocument();

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

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

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

    【讨论】:

      猜你喜欢
      • 2021-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-19
      • 2011-08-04
      相关资源
      最近更新 更多