2

以下のような複数の XML ドキュメントを順番に含むファイルがあります。

<?xml version="1.0"?><Node>...<Node>...</Node>...</Node><?xml version...

それが何度か繰り返されます。

私はJavaを使用し、ファイル用にFileChannelを開き、読み取るバイトバッファを持っています。Java で XML バイトの部分解析を行う組み込みの方法、より簡単な方法、または既に解決済みの方法がある場合は、感謝します。たとえば、次のようにします。

FooParser parser = new FooParser();

while (...)
{
    buffer.flip();
    parser.parse(buffer);
    buffer.compact();
    if (parser.done())
    {
        xmlDocs.add(parser.xml());
        parser.reset();
    }
    file.read(buffer);
    ...
}
4

3 に答える 3

2

私が知っているAPIには、単一のストリームで複数のxmlドキュメントを解析するものは何もありません。<?xml ...自分でタグをスキャンして入力を分割する必要があると思います。パーサーは、タグを読み取るまで、次の xml ドキュメントにヒットしたことを認識しません。その時点でチョークし、次の xml ドキュメントの開始タグは既に読み取られています。

実は、そういえば、プル パーサーを使用して、やりたいことを実行できるかもしれません。しかし、API の SAX パーサーと DOM パーサーでは、期待どおりの結果が得られないことは確かです。

于 2011-06-12T06:22:31.067 に答える
1

私はこのようなことをしなければなりませんでした、そして私はここで(私自身)より簡単な使用のためにすべてをラップするReaderサブクラスで答えました。

于 2011-07-27T17:31:25.627 に答える
0

<?XML ファイルは実際には xml 宣言で始まる必要があるため、XML ファイルの先頭でシーケンスをチェックするのが一般的です (ファイルの途中に BOM があるとは想定されていません)。したがって、エンコーディングを見て、<?その後「xml」が出現するたびにすでに提案されているようにファイルを分割します...

于 2011-06-12T08:04:15.637 に答える