reformat_xml_fileコマンド マニュアル

(The documentation of reformat_xml_file command)

Last Update: 2023/2/20


◆機能・用途(Purpose)

XMLファイルを読みやすく整形する。
Reformat an XML file to a better-to-read style.


◆ソースコード(Source code)

$YMAEDA_OPENTOOL_DIR/xml/src/reformat_xml_file.c


◆使用方法(Usage)

コマンドライン引数でパラメータを指定する。 パラメータの一覧を下表に示す。
Specify parameters by command-line arguments. The table below shows a list of parameters.


●「-」から始まらない引数 (Arguments not beginning with “-”)

引数
Argument
与える値
Quantity to be given
第1引数
1st argument
元のXMLファイル(入力ファイル)名。
The name of the original XML file (the input file).
第2引数
2nd argument
整形後のXMLファイル(出力ファイル)名。
The name of the reformatted XML file (the output file).


●1つの「-」から始まる引数 (Arguments beginning with a single “-”)

このコマンドでは1つの「-」から始まる引数は存在しない。
This command does not have arguments beginning with a single “-”.


●「--パラメータ名=パラメータ値」の形式の引数 (Arguments of a form “--Parameter name=Parameter Value”)

「--パラメータ名=パラメータ値」の形式の引数は自由な順番で指定できる。 「-」から始まらない引数の間に挿入しても良い。 相反する指定がなされた場合には後の指定が優先される。 デフォルト値を持つパラメータは省略できる。
Arguments of a form “--Parameter name=Parameter Value” can be placed in an arbitrary order. They can even be inserted between arguments not beginning with “-”. In case of conflicting options being specified, the latter option has a higher priority. Parameters that have default values can be omitted.

パラメータ名
Parameter name
意味
Meaning
可能なパラメータ値
Allowed parameter values
デフォルト値
Default value
lineBreakDepth 出力ファイルにおいて改行を行うXML要素の最大深さ。 深さはroot要素を0、その子要素を1、孫要素を2、…と定義する。 lineBreakDepthの深さの各XML要素(その全ての子要素を含む)を1行に出力する。 深いXML要素の改行を行わないことで1行が長くなる代わりに grepコマンドなどを用いた検索が容易になる。
The maximum depth of XML elements to place with line breaks in the output file. The depth is defined as 0 for the root element, 1 for child elements of the root element, 2 for ground-child elements of the root element, …. Each XML element of depth lineBreakDepth (including its all child elements) is written in one line. By suppressing the linebreaks for deep XML elements, long contents in each line becomes long, but instead searching elements by grep commands would be easier.
非負の整数またはinfinite(深さ制限なし)。
A non-negative integer or infinite (not depth limit).
infinite
outputFormat 出力形式。
The output format.
xml


◆動作(Behaviour)

第1引数で指定したXMLファイルを読み込み、 第2引数で指定したファイルに出力する。 XML形式で出力する場合、出力ファイルではコメントは除かれ、 XMLデータ構造が分かりやすいように改行、インデントが配置される。
Read the XML file specified by the 1st argument, and output the data to an XML file specified by the 2nd argument. In the output XML file, comments are not included, and linebreaks and indents are deployed properly for the users to easily understand the XML data structure.


◆使用例(Example)

reformat_xml_file original.xml reformatted1.xml
reformat_xml_file original.xml reformatted2.xml --lineBreakDepth=2
reformat_xml_file original.xml table.dat --outputFormat=table

(original.xml)
<?xml version="1.0"?>
        <dataset><data1 type="data" number="1"><!-- DATA 1 (a, b) --><subdata1a>
a</subdata1a><subdata1b><subsubdata1b0>b0
</subsubdata1b0></subdata1b>
  </data1><data2 type="data" number="2">
<!-- DATA 2 (A, B) --><subdata2A>A</subdata2A>
      <subdata2B>B
</subdata2B></data2></dataset>

(reformatted1.xml)
<?xml version="1.0"?>
<dataset>
  <data1 type="data" number="1">
    <subdata1a>
      a
    </subdata1a>
    <subdata1b>
      <subsubdata1b0>
        b0
      </subsubdata1b0>
    </subdata1b>
  </data1>
  <data2 type="data" number="2">
    <subdata2A>
      A
    </subdata2A>
    <subdata2B>
      B
    </subdata2B>
  </data2>
</dataset>

(reformatted2.xml)
<?xml version="1.0"?>
<dataset>
  <data1 type="data" number="1">
    <subdata1a>a</subdata1a>
    <subdata1b><subsubdata1b0>b0</subsubdata1b0></subdata1b>
  </data1>
  <data2 type="data" number="2">
    <subdata2A>A</subdata2A>
    <subdata2B>B</subdata2B>
  </data2>
</dataset>

(table.dat)
Nelements=8
0[TAB]-1[TAB]2[TAB]1,5[TAB]0[TAB]dataset[TAB][TAB]0
1[TAB]0[TAB]2[TAB]2,3[TAB]1[TAB]data1[TAB][TAB]2[TAB]type=data[TAB]number=1
2[TAB]1[TAB]0[TAB][TAB]2[TAB]subdata1a[TAB]a[TAB]0
3[TAB]1[TAB]1[TAB]4[TAB]2[TAB]subdata1b[TAB][TAB]0
4[TAB]3[TAB]0[TAB][TAB]3[TAB]subsubdata1b0[TAB]b0[TAB]0
5[TAB]0[TAB]2[TAB]6,7[TAB]1[TAB]data2[TAB][TAB]2[TAB]type=data[TAB]number=2
6[TAB]5[TAB]0[TAB][TAB]2[TAB]subdata2A[TAB]A[TAB]0
7[TAB]5[TAB]0[TAB][TAB]2[TAB]subdata2B[TAB]B[TAB]0