1

そのため、現在 ePub リーダー アプリケーションに取り組んでおり、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()メソッドがひどく面倒であることを知っています。クラスに分割する前に、現時点で機能させようとしています)

4

3 に答える 3

2

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

于 2010-05-22T01:54:35.463 に答える
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);
}
于 2010-05-22T02:02:44.980 に答える
0

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

XmlDocument xmldoc = new XmlDocument();

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

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

XmlNodeList xnl = xmldoc.GetElementsByTagName("ルートファイル");

于 2010-06-04T12:47:52.630 に答える