503(サーバーは利用できない)ローカルXHTMLファイルをロードするときのWebException

StackOverflow https://stackoverflow.com/questions/2886530

質問

現在、私はEpub Readerアプリケーションに取り組んでおり、System.xmlとXmldocumentを使用して、通常のXMLファイルをたくさん読んでいます。

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

ただし、実際の本のテキストを含むXHTMLファイルを開こうとしています。XHTMLファイルです。今、私はこの2つの違いを本当に知りませんが、このコードで次のエラーが発生します(同じドキュメントで、同じxmldocumentとxmlnodelist変数を使用しています)

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

「WebExceptionが処理されていませんでした:リモートサーバーはエラーを返しました:(503)サーバーは利用できません」

それはローカルドキュメントなので、なぜこのエラーを発しているのか理解していませんか?どんな助けも大歓迎です。 :)

それが役立つならば、私はここに完全なソースコードを持っています:http://drop.io/epubtest

(私は知っています 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);
}

他のヒント

XHTMLファイルからDoctypeを削除してみてください。おそらく外部DTDへのリンクがあります。

次のコードを試してください。

xmldocument xmldoc = new xmldocument();

doc.xmlresolver = null; //これはDTDを無視します

xmldoc.load(path.combine(directory.getCurrentDirectory()、 "meta-inf/container.xml"));

xmlnodelist xnl = xmldoc.getelementsbytagname( "rootfile");

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top