代码之家  ›  专栏  ›  技术社区  ›  Kevin Coppock

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

  •  1
  • Kevin Coppock  · 技术社区  · 14 年前

    因此,我目前正在开发一个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 回复  |  直到 14 年前
        1
  •  0
  •   John Saunders    14 年前

    尝试以下未测试的代码:

    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
  •  2
  •   volody    14 年前

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

        3
  •  0
  •   Sur    14 年前

    尝试以下代码:

    xmldocument xmldoc=new xmldocument();

    doc.xmlresolver=null;//这将忽略DTD

    xmldoc.load(path.combine(directory.getcurrentdirectory(),“META-INF/container.xml”));

    xmlnodelist xnl=xmldoc.getElementsByTagname(“rootfile”);