「XML関連」の編集履歴(バックアップ)一覧はこちら
「XML関連」(2010/06/26 (土) 12:09:09) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
* xmllintコマンド
通信路上でのデータ交換で使うXMLデータは、データ量を少なくするためか、改行がなく、1行のデータになっていることが多い。
これだと見にくいので、改行や適切なインデントを入れて整形してくれるツールがあると便利である。
手元のLinux(Ubuntu10.04)だと、&bold(){xmllintコマンド} がインストールされており、以下のようなことができる。
#contents()
** XMLの整形
以下のコマンドで整形されたXMLが標準出力に出力されます。
$ xmllint --format &italic(){<XMLファイル>}
例:
■変換前
$ cat note_flat.xml
<note><to>Tove</to><from>Jani</from><heading>Reminder</heading><body>Don't forget me this weekend!</body></note>
■変換後
$ xmllint --format note_flat.xml
<?xml version="1.0"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
** encodeの設定
以下のコマンドで、指定したエンコーディングで変換されたXMLが標準出力に出力されます。
$ xmllint --encode <エンコード名> &italic(){<XMLファイル>}
例:
■変換元(XML宣言がない。エンコードはUTF-8)
$ cat note_jp.xml
<note>
<to>太郎</to>
<from>花子</from>
<heading>リマインダー</heading>
<body>今週末私を忘れるな!</body>
</note>
■エンコーディングをUTF-8に設定
$ xmllint --encode UTF-8 note_jp.xml > note_jpUTF8.xml
$ nkf --guess note_jpUTF8.xml <--エンコードの確認
UTF-8
$ cat note_jpUTF8.xml
<?xml version="1.0" encoding="UTF-8"?>
<note>
<to>太郎</to>
<from>花子</from>
<heading>リマインダー</heading>
<body>今週末私を忘れるな!</body>
</note>
■エンコーディングをUTF-8からShift_JISに変更
$ xmllint --encode Shift_JIS note_jpUTF8.xml > note_jpSJIS.xml
$ nkf -guess note_jpSJIS.xml
Shift_JIS
$ nkf note_jpSJIS.xml
<?xml version="1.0" encoding="Shift_JIS"?>
<note>
<to>太郎</to>
<from>花子</from>
<heading>リマインダー</heading>
<body>今週末私を忘れるな!</body>
</note>
** XMLの自動生成
以下のコマンドで簡単なXMLが出力される。例にあるものしか出力できないようなので、あまり使い道はないかも・・・
$ xmllint --auto
例:
$ xmllint --auto
<?xml version="1.0"?>
<info>abc</info>
他にも、XML形式の妥当性チェックなどもあり、DTD、XMLScheme、RELAXNGなどと使った妥当性検証もできるようです。
* xmllintコマンド
通信路上でのデータ交換で使うXMLデータは、データ量を少なくするためか、改行がなく、1行のデータになっていることが多い。
これだと見にくいので、改行や適切なインデントを入れて整形してくれるツールがあると便利である。
手元のLinux(Ubuntu10.04)だと、&bold(){xmllintコマンド} がインストールされており、以下のようなことができる。
#contents()
** XMLの整形
以下のコマンドで整形されたXMLが標準出力に出力されます。
$ xmllint --format &italic(){<XMLファイル>}
例:
■変換前
$ cat note_flat.xml
<note><to>Tove</to><from>Jani</from><heading>Reminder</heading><body>Don't forget me this weekend!</body></note>
■変換後
$ xmllint --format note_flat.xml
<?xml version="1.0"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
** encodeの設定
以下のコマンドで、指定したエンコーディングで変換されたXMLが標準出力に出力されます。
$ xmllint --encode <エンコード名> &italic(){<XMLファイル>}
例:
■変換元(XML宣言がない。エンコードはUTF-8)
$ cat note_jp.xml
<note>
<to>太郎</to>
<from>花子</from>
<heading>リマインダー</heading>
<body>今週末私を忘れるな!</body>
</note>
■エンコーディングをUTF-8に設定
$ xmllint --encode UTF-8 note_jp.xml > note_jpUTF8.xml
$ nkf --guess note_jpUTF8.xml <--エンコードの確認
UTF-8
$ cat note_jpUTF8.xml
<?xml version="1.0" encoding="UTF-8"?>
<note>
<to>太郎</to>
<from>花子</from>
<heading>リマインダー</heading>
<body>今週末私を忘れるな!</body>
</note>
■エンコーディングをUTF-8からShift_JISに変更
$ xmllint --encode Shift_JIS note_jpUTF8.xml > note_jpSJIS.xml
$ nkf -guess note_jpSJIS.xml
Shift_JIS
$ nkf note_jpSJIS.xml
<?xml version="1.0" encoding="Shift_JIS"?>
<note>
<to>太郎</to>
<from>花子</from>
<heading>リマインダー</heading>
<body>今週末私を忘れるな!</body>
</note>
** XMLの自動生成
以下のコマンドで簡単なXMLが出力される。例にあるものしか出力できないようなので、あまり使い道はないかも・・・
$ xmllint --auto
例:
$ xmllint --auto
<?xml version="1.0"?>
<info>abc</info>
他にも、XML形式の妥当性チェックなどもあり、DTD、XMLScheme、RELAXNGなどと使った妥当性検証もできるようです。
----
#comment()
----