どの XML パーサーを使用すべきか

メッセージが汎用 XML 文書である場合、専用 XML ドメイン (XMLNSC または XMLNS) の 1 つを使用してメッセージを構文解析するか、または MRM ドメインを使用してメッセージを構文解析することができます。

注: SOAP ドメインは SOAP with Attachments および標準 (WS-Addressing や WS-Security など) を完全にサポートしているため、SOAP XML は任意の名前空間対応 XML パーサーを使用して構文解析できますが、SOAP XML の構文解析には専用の SOAP ドメインを使用してください。
注: XML ドメインは推奨されません。 新規メッセージ・フローの開発にはそれを使用しないでください。 XML ドメインは、既存のメッセージ・フローは引き続き処理します。

どの XML パーサーを選択するかは、XML メッセージの性質、および使用したい変換ロジックに応じて異なります。 それぞれのドメインを差別化している機能については、以下のとおりです。

  • XMLNSC パーサーには、XMLNS パーサーおよび XML パーサーを上回る大幅なパフォーマンスの改善を提供する新規アーキテクチャーがあります。
  • XMLNSC パーサーは、メッセージ・セットから生成された XML スキーマがあってもなくても使用できます。 メッセージ・セットと XMLNSC パーサーをともに使用すると、パーサーは妥当性検査モードで作動することができ、これにより以下の機能が提供されます。
    • 構文解析および書き込み時の XML スキーマ 1.0 準拠の妥当性検査。
    • XML スキーマは、メッセージ内のフィールドのデータ・タイプを常に文字ストリングとして扱うのではなく、その真のデータ・タイプを示します。
    • Base64 バイナリー・データは自動的にデコードすることができます。
  • MRM パーサーは、メッセージ・セットから生成されたメッセージ・ディクショナリーとともに使用する必要があります。 このメッセージ・ディクショナリーにより、MRM パーサーは以下の機能を提供できます。例えば次のようなものがあります。
    • 構文解析および書き込みの際の、ディクショナリーに照らした妥当性検査。 妥当性検査は XML スキーマ 1.0 準拠ではないことに注意してください。
    • ディクショナリーは、メッセージ内のフィールドのデータ・タイプを常に文字ストリングとして扱うのではなく、その真のデータ・タイプを示します。
    • Base64 バイナリー・データは自動的にデコードすることができます。
  • XMLNS パーサーはプログラマチックであり、構文解析時にモデルを使用しません。

    これは以下のことを意味します。

    • XML メッセージ内のすべてのデータは、文字ストリングとして扱われます。
    • 構文解析および書き込みの際に妥当性検査は実行できません。
  • MRM パーサーは、変換ロジックの作成タスクを単純化するために、XML 物理形式のメッセージ・セットからの情報を使用します。
    • 日時情報は、指定された書式制御ストリングを使用したデータ値から抽出できます。
    • 出力メッセージを作成する際、MRM パーサーは、XML 宣言および他の XML 制約を自動的に生成できます。
  • XMLNSC パーサーと XMLNS パーサーは、メッセージ・セットからの XML 物理形式情報を使用しません。 変換ロジックでは、出力メッセージにすべての構成を明示的に作成する必要があります。
  • MRM パーサーは、構文解析時に XML メッセージの一部を破棄します。例えば、空白のフォーマット設定、XML コメント、XML 処理命令、およびインライン DTD などです。 このパーサーを使用する場合、出力メッセージを作成する際にはこうした構成を作成できません。
  • デフォルトでは、XMLNSC パーサーは空白のフォーマット設定、XML コメント、XML 処理命令、およびインライン DTD を破棄します。 しかし、インライン DTD を除いてこうした構成すべてを保持するためのオプションが備えられています。 出力メッセージの構成時に、インライン DTD 以外のすべての構成を作成できます。
  • XMLNS パーサーは、空白のフォーマット設定を含め、XML 文書全部を保持します。 出力メッセージの構成時に、すべての XML 構成を作成できます。
  • XMLNSC パーサーと MRM パーサーは、コンパクトなメッセージ・ツリーを作成します。 このメッセージ・ツリーでは、XMLNS パーサーに比べて属性や単純エレメントに関して使用される構文エレメントが少なくなっています。 これによりこれらのパーサーは、大規模な XML メッセージの構文解析には XMLNS パーサーよりも適したものとなります。
  • XMLNS パーサーは、XMLNSC パーサーまたは MRM パーサーよりも、XML データ・モデルにより厳密に準拠しているメッセージ・ツリーを作成します。 メッセージ・ツリーにアクセスするために特定の XPath 式を使用していて、親子のノードの相対位置が重要な場合、またはテキスト・ノードに直接アクセスしている場合には、このパーサーを使用できるかもしれません。
  • XMLNS パーサーがエレメントのテキスト内容をエレメントの子として保持するのに対して、XMLNSC パーサーは圧縮ツリーを構築します。 XMLNSC パーサーの圧縮ツリーでテキスト値を更新するには、ESQL を使用してターゲット・ノードの VALUE を設定します。 例:
    Set OutputRoot.XMLNSC.TestMsg.Value3 VALUE = InputRoot.XMLNSC.TestMsg.Value2;
ヒント: パフォーマンスが重要な場合は、XMLNSC ドメインを使用してください。
ヒント: XML メッセージの内容と値を妥当性検査する必要がある場合は、XMLNSC ドメインを使用してください。
ヒント: 出力時に XML メッセージのフォーマットを保持する必要がある場合は、混合内容を保持するオプションを指定して XMLNSC ドメインを使用してください。
ヒント: メッセージ・ツリーにアクセスするために特定の XPath 式を使用しているなどの理由で、メッセージ・ツリーを XML データ・モデルにできるだけ厳密に準拠させる必要がある場合は、XMLNS ドメインを使用してください。
ヒント: DFDL ドメインによって構文解析された非 XML データを取得し、そのデータを同等の XML に変換するだけの場合は、XMLNSC ドメインを使用してください。
ヒント: MRM ドメインの CWF または TDS 形式によって解析された非 XML データを取得し、そのデータを同等の XML に変換するだけの場合は、MRM ドメインを使用します。 これは、メッセージ・セットにデフォルト値で XML 物理形式を追加し、メッセージ・ツリーの「プロパティー」フォルダーで「メッセージ形式」を変更することで行えます。