xml2dcm: XML 文書を DICOM ファイルまたはデータセットへ変換する
書式
xml2dcm [options] xmlfile-in dcmfile-out
説明
xml2dcm は、XML(Extensible Markup Language)文書の内容を DICOM ファイルまたはデータセットへ変換するユーティリティです。XML 文書は、ファイル dcm2xml.dtd に記述された DTD(Document Type Definition)に対して妥当であることが前提となります。適切な XML ファイルは dcm2xml ツールで生成できます(バイナリデータを含めるにはオプション +Wb を推奨します)。
引数
xmlfile-in XML input filename to be converted ("-" for stdin)
dcmfile-out DICOM output filename ("-" for stdout)
オプション
全般オプション
-h --help- このヘルプを表示して終了する
--version- バージョン情報を表示して終了する
--arguments- 展開後のコマンドライン引数を表示する
-q --quiet- 静音モード。警告およびエラーを表示しない
-v --verbose- 詳細表示モード。処理の詳細を表示する
-d --debug- デバッグモード。デバッグ情報を表示する
-ll --log-level [l]evel: string constant- (fatal, error, warn, info, debug, trace)ロガーにレベル l を使用する
-lc --log-config [f]ilename: string- ロガーに設定ファイル f を使用する
入力オプション
+f --read-meta-info- メタ情報があれば読み込む(既定値)
-f --ignore-meta-info- ファイルメタ情報を無視する
処理オプション
+Vd --validate-document- XML 文書を DTD に対して妥当性検証する
+Vn --check-namespace- 文書ルートの XML 名前空間を確認する unique identifiers:
+Ug --generate-new-uids- Study/Series/SOP Instance UID を新規生成する
-Uo --dont-overwrite-uids- 既存の UID を上書きしない(既定値)
+Uo --overwrite-uids- 既存の UID を上書きする
出力オプション
+F --write-file- ファイル形式で書き込む(既定値)
-F --write-dataset- ファイルメタ情報なしでデータセットを書き込む
+Fu --update-meta-info- 特定のファイルメタ情報を更新する output transfer syntax:
+t= --write-xfer-same- 入力と同じ転送構文で書き込む(既定値)
+te --write-xfer-little- explicit VR little endian の転送構文で書き込む
+tb --write-xfer-big- explicit VR big endian の転送構文で書き込む
+ti --write-xfer-implicit- implicit VR little endian の転送構文で書き込む
+td --write-xfer-deflated- deflated explicit VR little endian の転送構文で書き込む error handling:
-E --stop-on-error- 文書が無効なら書き込まない(既定値)
+E --ignore-errors- 文書が無効でも書き込みを試みる post-1993 value representations:
+u --enable-new-vr- 新しい VR(UN/UT)のサポートを有効にする(既定値)
-u --disable-new-vr- 新しい VR のサポートを無効にし、OB へ変換する group length encoding:
+g= --group-length-recalc- グループ長があれば再計算する(既定値)
+g --group-length-create- 常にグループ長要素を付けて書き込む
-g --group-length-remove- 常にグループ長要素を付けずに書き込む length encoding in sequences and items:
+e --length-explicit- 明示的な長さで書き込む(既定値)
-e --length-undefined- 未定義の長さで書き込む data set trailing padding (not with --write-dataset):
-p= --padding-retain- パディングを変更しない(--write-dataset 指定がなければ既定値)
-p --padding-off- パディングなし(--write-dataset 指定時は暗黙)
+p --padding-create [f]ile-pad [i]tem-pad: integer- ファイルを f バイトの倍数に、項目を i バイトの倍数に整列する deflate compression level (only with --write-xfer-deflated):
+cl --compression-level [l]evel: integer (default: 6)- 0=無圧縮, 1=最速, 9=最高圧縮
注記
期待される XML 入力の基本構造は次のとおりです。
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE file-format SYSTEM "dcm2xml.dtd">
<file-format xmlns="http://dicom.offis.de/dcmtk">
<meta-header xfer="1.2.840.10008.1.2.1" name="Little Endian Explicit">
<element tag="0002,0000" vr="UL" vm="1" len="4"
name="MetaElementGroupLength">
166
</element>
...
<element tag="0002,0013" vr="SH" vm="1" len="16"
name="ImplementationVersionName">
OFFIS_DCMTK_353
</element>
</meta-header>
<data-set xfer="1.2.840.10008.1.2" name="Little Endian Implicit">
<element tag="0008,0005" vr="CS" vm="1" len="10"
name="SpecificCharacterSet">
ISO_IR 100
</element>
...
<sequence tag="0028,3010" vr="SQ" card="2" name="VOILUTSequence">
<item card="3">
<element tag="0028,3002" vr="xs" vm="3" len="6"
name="LUTDescriptor">
256\0\8
</element>
...
</item>
...
</sequence>
...
<element tag="7fe0,0010" vr="OW" vm="1" len="262144"
name="PixelData" loaded="no" binary="hidden">
</element>
</data-set>
</file-format>
DICOM データセットでは "file-format" タグと "meta-header" タグが存在しないことがあります。
文字エンコーディング
DICOM の文字エンコーディングは、タグ "0008,0005"(Specific Character Set)の要素が存在すれば、そこから自動的に判定されます。現在サポートされている文字セットは次のとおりです(libxml が iconv サポートを含んでいる必要があります。–version の出力を参照してください)。
ASCII (ISO_IR 6) (UTF-8)
UTF-8 "ISO_IR 192" (UTF-8)
ISO Latin 1 "ISO_IR 100" (ISO-8859-1)
ISO Latin 2 "ISO_IR 101" (ISO-8859-2)
ISO Latin 3 "ISO_IR 109" (ISO-8859-3)
ISO Latin 4 "ISO_IR 110" (ISO-8859-4)
ISO Latin 5 "ISO_IR 148" (ISO-8859-9)
ISO Latin 9 "ISO_IR 203" (ISO-8859-15)
Cyrillic "ISO_IR 144" (ISO-8859-5)
Arabic "ISO_IR 127" (ISO-8859-6)
Greek "ISO_IR 126" (ISO-8859-7)
Hebrew "ISO_IR 138" (ISO-8859-8)
複数の文字セットはサポートしていません(値多重度がある場合、文字エンコーディングには "Specific Character Set" の最初の値のみが使用されます)。
XML 構造の詳細については dcm2xml のドキュメントを参照してください。
バイナリデータ
バイナリデータ(*)は、バックスラッシュ "\" で区切った 16 進数の並びとして、または Base64 形式(binary="base64")でエンコードできます。さらに、バイナリデータはファイルから読み込むこともできます(binary="file")。この場合、ファイル名を要素値として指定します。例:
<element tag="7fe0,0010" vr="OW" ... binary="file">subdir/pixeldata.raw</element>
ファイルの内容はそのまま読み込まれる点に注意してください。OW データは little endian 順であることが前提で、必要に応じてバイトスワップされます。データ量が Rows や Columns などの他の属性に照らして妥当かどうかの確認は行われません。
(*)現在サポートしているのは OB と OW のデータのみです。すなわち VR が OD, OF, OL, OV の要素値は「バイナリデータ」とはみなされず、他のすべての VR と同様に扱われます。
圧縮
libxml が zlib サポート付きでコンパイルされていれば、入力ファイル(xmlfile-in)を ZIP で圧縮することもでき、通常はファイルサイズが大幅に小さくなります。zlib サポートが利用可能かどうかは、オプション –version の出力で確認できます。
制限事項
libxml のバージョンによって、XML 要素値の最大長の上限が異なる場合があります。したがって、非常に長い要素値(たとえばピクセルデータ)の使用は避けるべきです。
なお、xml2dcm は現時点で DICOMDIR ファイルを完全にはサポートしていません。具体的には、各種オフセットデータ要素の値はこのツールでは自動更新されません。
ロギング
各コマンドラインツールおよび基盤となるライブラリのロギング出力レベルは、ユーザーが指定できます。既定では、エラーと警告のみが標準エラー出力に書き出されます。オプション –verbose を使うと、処理の詳細などの情報メッセージも報告されます。オプション –debug を使うと、内部動作のより詳しい情報を得られます(たとえばデバッグ目的に有用です)。その他のロギングレベルはオプション –log-level で選択できます。–quiet モードでは致命的エラーのみが報告されます。そうした非常に深刻なエラーが発生した場合、アプリケーションは通常そのまま終了します。各ロギングレベルの詳細については、モジュール "oflog" のドキュメントを参照してください。
ロギング出力をファイルへ書き出す場合(必要に応じてログファイルのローテーションを伴います)、または syslog(Unix)やイベントログ(Windows)へ書き出す場合は、オプション –log-config を使用できます。この設定ファイルでは、特定のメッセージのみを特定の出力ストリームへ振り分けたり、メッセージの発生元のモジュールやアプリケーションに基づいて特定のメッセージをフィルタリングしたりすることもできます。設定ファイルの例は < etcdir>/logger.cfg に用意されています。
コマンドライン
すべてのコマンドラインツールは、引数について次の記法を用います。角括弧は省略可能な値(0〜1)を囲み、末尾の 3 つのドットは複数の値が許されること(1〜n)を示し、両者の組み合わせは 0〜n 個の値を意味します。
コマンドラインオプションは、先頭の '+' または '-' 記号によって引数と区別されます。通常、コマンドラインオプションの順序と位置は任意です(つまりどこに現れてもかまいません)。ただし、オプションが相互排他である場合は、最も右に現れたものが使用されます。この挙動は一般的な Unix シェルの標準的な評価規則に従います。
加えて、ファイル名の前に '@' 記号を付けることで、1 つ以上のコマンドファイルを指定できます(例: @command.txt)。このようなコマンド引数は、それ以降の評価が行われる前に、対応するテキストファイルの内容に置き換えられます(複数の空白は、引用符で囲まれている場合を除き、単一の区切り文字として扱われます)。なお、コマンドファイルの中に別のコマンドファイルを含めることはできません。この単純ながら効果的な方法により、よく使うオプションや引数の組み合わせをまとめられ、長く分かりにくいコマンドラインを避けられます(例は < datadir>/dumppat.txt に用意されています)。
環境変数
xml2dcm ユーティリティは、環境変数 DCMDICTPATH で指定された DICOM データ辞書の読み込みを試みます。既定では、すなわち DCMDICTPATH 環境変数が設定されていない場合、辞書がアプリケーションに組み込まれていない限り(Windows では既定で組み込み)、ファイル < datadir>/dicom.dic が読み込まれます。
通常はこの既定の動作が望ましく、DCMDICTPATH 環境変数は別のデータ辞書が必要な場合にのみ使用すべきです。DCMDICTPATH 環境変数は Unix シェルの PATH 変数と同じ形式で、コロン(":")でエントリを区切ります。Windows システムでは、区切り文字としてセミコロン(";")を使用します。データ辞書のコードは、DCMDICTPATH 環境変数で指定された各ファイルの読み込みを試みます。データ辞書を 1 つも読み込めない場合はエラーとなります。
ファイル
< datadir>/dcm2xml.dtd - Document Type Definition(DTD)ファイル
関連項目
dcm2xml(1)
著作権
Copyright (C) 2003-2025 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.