XML

XMLストリームは、XMLを扱うためのストリームです。

ストリームプロパティ

プロパティ名
XML宣言に記述するDTDのシステム識別子 DOCTYPE宣言として記述するシステム識別子(SystemId)を指定します。
※外部から読み込んだXMLに既にDOCTYPE宣言がついていた場合、ここで指定した値で置換します。
外部エンティティを読み込む 外部エンティティを読み込むかどうかを指定します。外部参照については、下記「外部参照」を参照してください。
はい 外部エンティティが読み込まれ、エンティティ参照を展開します。
いいえ 外部エンティティは読み込まれず、エンティティ参照も展開しません。
DTDによる妥当性を検証 DTDによる妥当性を検証するどうかを指定します。外部参照については、下記「外部参照」を参照してください。
はい DTDによる妥当性の検証を行います。
システム識別子が指定されていた場合、そのDTDを使用します。検証エラーがあった場合はエラーが発生します。DTDが外部エンティティであった場合は外部エンティティを読み込むプロパティを「はい」にします。
いいえ DTDによる妥当性の検証を行いません。
出力エンコーディング ストリームのエンコーディングを指定します。XMLにエンコーディングが記述されているので、外部からストリームを読み込む場合、実際のエンコーディングと異なっていても構いません。
utf-8 unicode utf-8
shift_jis シフトJIS
euc-jp EUC-JP
iso-2022-jp ISO-2022-JP
utf-16 unicode utf-16
Windows-31J Windows-31J
改行コード XML内の改行コードを指定します。
※CRを指定することはできません。
プラットフォーム プラットフォーム標準の改行コードに変換します。
CR+LF CR+LFに変換します。
LF LFに変換します。
出力時の整形処理 出力時の整形処理を指定します。
整形しない 整形を行いません。
余分な空白を削除 空白文字(改行文字も含む)のみのノードを削除します。
インデント 空白文字(改行文字も含む)のみのノードを削除し、インデントします。
出力時にXML宣言を記述する 出力時にXML宣言を記述するどうかを指定します。
はい 出力時にXML宣言を記述します。
いいえ 出力時にXML宣言を記述しません。
空要素タグを使用する 空要素の出力に空要素タグを使用するかどうかを指定します。
はい 空要素は空要素タグで出力されます。
いいえ 空要素は連続する対の要素タグで出力されます。
名前空間 名前空間を指定します。指定方法は下記「名前空間プロパティ」を参照してください。

名前空間プロパティ

フィールド定義で、要素名、属性名にPrefix付きの名前を使用する場合、そのPrefixを名前空間プロパティで指定する必要があります。指定が無い場合、エラーが発生します。

デフォルトネームスペースを使用する場合、Prefixフィールドに「#default」を入力します。

名前空間を指定するには、以下の手順で行います。

外部参照

DTDやエンティティの外部参照が相対的なURIとして記述されている場合、システム標準のDTDフォルダーを起点にします。システム標準のDTDフォルダーとは、初期値では[DATA_DIR]/system/schemaです。

以下のようなDOCTYPE宣言を持つXMLを検証するためには、上記のシステム標準のDTDフォルダーにtest.dtdを置く必要があります。

<!DOCTYPE test SYSTEM "test.dtd">

フィールド定義

フィールド名、データ型、繰り返し、ノードタイプ、表示名を定義します。

フィールド名 要素名または属性名を指定します。
データ型 String、Boolean、Integer、Double、Decimal、DateTimeのいずれか。Binaryは指定できません。
繰り返し 要素が繰り返すかどうか指定します。最上位の要素と属性には繰り返しを指定できません。また、同じ階層に同じ名前の要素を複数定義した場合、その要素に繰り返しを指定きません。
ノードタイプ 要素または属性を選択します。
表示名 マッパーでの表示名を指定します。フィールド名である要素名、属性名がわかりにくい場合、マッピングウィンドウで参照するフィールド名を表示名で表示することにより、わかりやすくマッピングを行うことができます。

注意

XMLのフィールド定義はXMLの階層構造をそのままに表現しています。以下の点に注意してください。

  • 最上位の要素は1つのみ。
  • 同じ階層に同じ名前の要素を定義できます。
  • 同じ階層に同じ名前の属性は定義できません。
  • 同じ階層に同じ名前の要素を複数定義した場合、「繰り返し」フィールドを「あり」に指定できません。

フィールド名

フィールド名はルートからのXPath形式となります。同じ階層に同じ名前の要素が複数ある場合はインデックスがつけられます。

XMLフィールド定義の例

名前繰り返しノードタイプフィールド名 ※1
rootなし要素/root
  recordあり要素/root/record
    attr1なし属性/root/record/@attr1
    element1なし要素/root/record/element1[1]
    element1なし要素/root/record/element1[2]
    element2なし要素/root/record/element2
      x:element3 ※2あり要素/root/record/element2/x:element3

※1 実際にはこのフィールド名をユーザーが直接使用することはありません。
※2 Prefix「x」に対して何らかのNamespaceURIが定義されているものとします。

注意

名前に利用できる文字列として以下の条件があります。

!\"#$%&'()=~^|\\@`+*;:{}[],.<>/?\tおよび半角空白を除く文字が使用可能
  • 名前の長さには制限なし
  • 英字の大文字と小文字は区別される
  • 日本語は使用可能
  • 全角数字などのXMLの要素名、属性名として許可されていない文字は使用不可

フィールドの値

フィールドの値は、「ノードタイプ」が要素の場合は要素内容、属性の場合は属性値です。フィールド定義に該当する要素または属性がない場合はnullとなります。子要素を持つ要素のフィールド値は、要素のテキスト部分が連結された文字列になります。

以下のようなXMLの場合、要素の値は「abcdefghi」になります。

<p>
  abc
    <a href=”http://foo.bar/”>
    def
    </a>
  ghi
</p>

レコード数

ストリームのレコード数は、繰返し可能な要素によって以下のように決まります。

空のストリーム

XMLストリームの空のストリームは以下のXMLとなります。

<?xml version="1.0" encoding="utf-8"?>
<root/>
 

▲ このページのトップへ