6

問題

非常に大きな XML ファイルをマシン上でローカルに開く場合、そのファイルが開くまでに時間がかかることはほぼ確実です。多くの場合、コンピューターが応答していないと判断してロックダウンする可能性があります。

これは、ユーザーが使用するかなり複雑なデータベースまたはシステムの XML バックアップをユーザーに提供する場合に問題になります。ユーザーが大規模なバックアップを開くことはもちろん、それらを使用する可能性はほとんどありません。

ページネーションは可能ですか?

XSLT を使用して、読み取り可能なバックアップをユーザーに提示します。これと同じ方法で、一度に 1 ページのデータのみをプルして、ファイル全体が一度に読み取られるのを防ぎ、上記の問題を引き起こすことは可能でしょうか。

答えは単にいいえだと思いますが、他の誰かが同じ問題を見て解決したかどうか知りたいです。

: これはローカル マシン上でのみ行われます。インターネット接続は必要ありません。作業が簡単になる場合は、JavaScript を使用できます。

4

5 に答える 5

3

XSLT を使用したページネーションは可能ですが、おそらく期待どおりの結果にはなりません。XSLT を機能させるには、XML ドキュメント全体を DOM ツリーに解析する必要があります。

あなたができることは、ストリーミング変換を試すことです: http://stx.sourceforge.net/

または、大きな XML ファイルを前処理して、XSLT で処理する前に小さなビットに分割することもできます。これには、 XMLStarletのようなコマンド ライン ツールを使用します。

于 2010-01-06T15:37:10.727 に答える
2

いい質問ですね!

私が知っている XSLT 実装は DOM を必要とするため、ドキュメント全体にアクセスするようにバインドされています (ただし、怠惰な方法で行うこともできます)。

とにかく、VTD-XML を見てください: http://vtd-xml.sourceforge.net/

最新の SAXON XSLT プロセッサは、「ストリーミング XSLT」と呼ばれるものの基本的なサポートもサポートしています。ここでそれについて読んでください:http://www.saxonica.com/documentation/index/intro.html

とはいえ、データベースのバックアップはおそらく XML の適切な使用例ではありません。XML データベースのバックアップに対処する必要がある場合は、できるだけ早くそれらから離れようとします。ログについても同様です。単純に物事を追加するだけで線形プロセスが機能するはずです。つまり、XML が最上位構造としてフォレストを許可するのはさらに良いことですが、それは決して起こらないと思います。

于 2010-01-06T15:38:12.160 に答える
1

XMLMax 仮想 xml エディターは、高速な PC で約 30 秒で 1 ギガバイトの xml ファイルをツリービューで読み取り、解析し、表示します。Windows OS のみ。任意のサイズまたは構造の xml で動作します。

于 2010-01-26T13:31:22.930 に答える
0

この問題を軽減する 1 つの方法は、大きな XML ファイルを多数の小さな XML ドキュメントに分割することです。データの種類に応じて、ファイルをさまざまな方法で分割または分割できます (日、トランザクション、エンティティなど)。

もちろん、これは他の多くの課題をもたらします。たとえば、データを全体として、または複数のパーティションにわたって表示する必要がある場合は、専用のパーサーを考え出す必要があります。

于 2010-01-06T15:38:06.933 に答える
0

こんにちは、あなたが使用しているプログラミング言語はわかりませんが、XMLReader を使用する C# では、ファイル全体ではなくタグごとにファイル タグを読み取ることができます。このようにして、最初のページだけを読み、読み上げを停止することができます。よろしく、イオーダン

于 2010-01-06T15:37:27.637 に答える