2

いくつかの情報を解析してキャッチする必要がある一時的な XML を作成するアプリケーションがあります。これらの XML の 1 つには、関連する各 XML へのパスを含む複数の行が含まれています。それは次のようなものです:

<z:row TimeStamp="2012-09-25T09:58:49" FileName="\\test\app\myfile_AB.xml"/>
<z:row TimeStamp="2012-09-25T09:58:49" FileName="\\test\app\myfile_CD.xml"/>
...

この「マスター」XML を JAXB で解析し、すべてのパスを取得してからループを実行し、関連する各 XML を 1 回の操作で処理できるかどうかを知りたいです。

すべての XML は、ほぼ同じ構造を持っています。

事前に助けてくれてありがとう

4

2 に答える 2

3

それは可能です。最初に 2 つの個別の XSD を定義する必要があります。1 つはマスター ファイルのマスター XSD で、次に他のすべてのファイルの 2 番目の XSD です。以下は、マスター XML の推奨される XML 構造の 1 つです。

  <files>
      <z:row>
      <z:row>
      <z:row>
      .
      .
  <files>

両方の XSD に対して Java pojo クラスを自動生成します。次に、マスター XML を受信するたびに、まずマスター XSD の自動生成クラスを使用してアンマーシャリングします。ここでは、Files.java オブジェクトなどのルート要素に対応するオブジェクトを取得します。このファイル オブジェクトで行オブジェクトを反復処理し、FileName を取得します。ここで、FileName ごとに、個別のアンマーシャラーを再度作成し、自動生成されたクラスでそのファイルをアンマーシャリングします。

于 2012-10-22T13:36:30.507 に答える
1

StAX (JSR-173) を使用して外側のドキュメントを解析することをお勧めしますXMLStreamReaderrow各要素に進むと、 JAXB (JSR-222)実装でコンテンツを非整列化します。これにより、外部ドキュメント全体をメモリに保持する必要がなくなります。

概念を示す例

于 2012-10-22T14:26:20.843 に答える