xmllintコマンド

 通信路上でのデータ交換で使うXMLデータは、データ量を少なくするためか、改行がなく、1行のデータになっていることが多い。
 これだと見にくいので、改行や適切なインデントを入れて整形してくれるツールがあると便利である。
 手元のLinux(Ubuntu10.04)だと、xmllintコマンド がインストールされており、以下のようなことができる。


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などと使った妥当性検証もできるようです。


名前:
コメント:


最終更新:2010年06月26日 12:09