2011-07-19 15 views
0

大きなxmlファイルがあり、解析したくないのですが、xmlファイル内のタグである<information>...</information>の間に1文字ずつ保存したいだけです。Javaのxmlファイルから文字の大きなリストを抽出する方法

どうすればいいですか?

+0

「&」のようなエンティティが1文字または5文字で表示されるかどうか気になりますか?指定したタグの間に他のタグがあるかどうかは気になりますか?これらの質問のいずれかに対する答えが「はい」の場合、パーサを使用します。それ以外の場合は、ファイルを文字列に読み込んでタグを検索します。 – parsifal

+0

xmlファイルを読み込むために文字列バッファを使用しましたが、xmlファイルの半分しか読み込めませんでした...文字列バッファが大きいと思われました – dronyx

+0

あなたが言っていることを意味するなら、正規表現 – bdares

答えて

0

他のソリューションの提案に役立つように解析しない理由を説明したい場合があります。

つまり、そのノードのXPathを構築できれば、その情報はXPathでいつでも取得できます。 this tutorialを参照してください。新たな情報が与えられ

UPDATE

が、これはあなたが望むソリューションではありません。 xmlを文字列として扱う場合は、StringBuilder(高速でスレッドセーフでないStringBufferのバージョン)に読み込むことをお勧めします。 StringBufferの使用に問題がある場合は、試したコードとエラーメッセージを投稿してください。最大サイズはjava.lang.Integer.MAX_VALUEで、2147483647です。

+0

私はそれを解析したくありません。例えば、タグ<>や属性などのすべての文字を保持したいからです。私はXpathを考えましたが、iveは使用しませんでした。 – dronyx

2

抽出しようとしているデータがメモリに収まるが、XMLファイル全体が一致しない場合は、XPPなどのストリーミングパーサーを使用します。

1

ファイルを解析せずに<information>要素の文字を正確に見つけることができません。あなたは時間の99%を動作させることができますが、開始タグに空白を入れたり、コメントアウトされた<information>要素を持ったり、<information>要素の一部を入れたりするなど、外部エンティティで使用します。

それがXMLの場合は、それを読むためにXMLパーサが必要です。

+0

私はそれを解析したくありません。私は2つのタグの間にすべてが必要です。それを解析すると、私が必要とする多くのデータが失われます。私はちょうどこのxmlファイルを取得し、を探してそこからまでのすべてを得ると言うことはできませんか? – dronyx

+0

理論的には完全に可能ですが、このように解析されていないデータへのアクセスを提供するXMLパーサについてはわかりません。多分それはそれが珍しい要求であることを示唆しています。おそらくそれはあなたがあなたの問題に対する代替の解決策を見なければならないということでしょうか? –

0

2つのタグ間のすべての文字を抽出することに興味があり、パーサーを使用したくないということを考えれば、XMLコンテンツを文字列として抽出し、単純な正規表現の一致を抽出することをお勧めします2つのタグの間の部分。

関連する問題