1

Java で C++ サーバーとクライアントを作成しています。それらの間でデータ構造を交換するために、xerces-c を使用して XML を使用することを計画しました。これは両側で利用できるからです。私は XML エンジンについて非常に初歩的な知識しか持っていないので、何が必要かをグーグルで調べていました。

したがって、いずれかの側で XML を受信するときは、SAX パーサーを使用します。しかし、これを理解していれば、これを使用してオブジェクトを XML にシリアライズすることはできないので、データを送信する場合は DOM を使用する必要がありますよね?

これで、少なくとも SAX と DOM の違いが少しよく理解できたので、SAX を使用する方が簡単であると考えましたが、XML の作成には使用できず、それを読み取るためだけに使用できます。

さて、私の質問は、両方を使用するのは良い考えですか、それともこの場合はDOMに固執するべきですか? 実際の処理はかなり単純なはずです。オブジェクトを転送する必要がある場合、転送される XML にそのデータをコピーする必要があります。したがって、デシリアライズする場合を除いて、クエリを実行する必要はありません。

4

1 に答える 1

1

まず、これらの言語間でデータ構造を交換する Java クライアントを備えた C++ サーバーを生成するための完璧なフレームワークであるApache Swiftを調べてみてください。約 2 時間で、swift を学習し、クライアントとサーバーのソース コードを自動的に生成できます。http://thrift.apache.org/で例を確認してください。

あなたの質問に。DOM と SAX を正しく理解していると思います。

DOM: XML ドキュメント全体を一度に読み取り、それを (RAM 内の) オブジェクトに配置します。これは、RAM に収まらない非常に大きなドキュメントでは機能しません。

SAX:これは、XML ドキュメントを 1 行ずつ読み取り、開発したパーサーが行ごとに何をすべきかを決定します。

既存のオブジェクトがある場合、通常、そこから XML を生成するのは簡単です。Simple XML Framework ( http://simple.sourceforge.net/ ) を使用して、Java オブジェクトをシリアライズおよびデシリアライズできます。

オブジェクトを交換してシリアライズしているので、 DOM戦略の方が簡単で問題が少ないため、可能な限り読み書きを行うべきだと思います。SAX は、RAM に非常に大きなファイル (または非常に小さなファイルが同時に多数ある) がある場合にのみ使用してください。

于 2013-06-24T02:54:28.270 に答える