XML文書のプリティプリント、および正規化ツール
XML文書を扱っていると人間が読みやすいようにインデント量を調整したり(プリティプリント)
XML文書の差分をとる/パッチをあてるなどの処理のために正規化(ノーマライズ)する必要が生じます。
このツール(xml-normalizer.jar)はそれらの処理を行うためのユーティリティです。
このツールを使えば、常に同じルールでインデント量/改行位置が決定されるので、 結果として、XML文書をdiff,patchすることが可能になります。
機能
- XML文書を読みやすい形式に変換
- XML文書をコンパクトな形式に変換(インデントと改行を削除)
- XML文書からDOCTYPE宣言を削除
- XML文書からコメントを削除
- XML文書からDOCTYPE宣言を取得して標準出力
内部でJDOMを使用して整形処理しています。
ダウンロード
- ソースコード xml-normalizer.tar.gz 2009-10-22 更新(v1.21)
変更履歴
v1.2 → v1.21 ( 2009-10-22 )
- DOCTYPEの削除・取得に関する処理を変更
- myxml.RemoveDoctype クラスの追加
v1.1 → v1.2 ( 2009-10-13 )
- unixstylelineseparator オプションの追加
ビルド方法
xml-normailzer.jar を Ubuntu 8.04 でビルドする場合の説明です。 (Antが必要/JDK6 を使用)
依存するjavaライブラリを別途用意すれば、Ubuntuでなくてもビルドできます。 その場合は、javaライブラリの配置場所に合わせて build.xml を修正します。
1) jdk と 依存するjavaライブラリのインストール
$ sudo apt-get install sun-java6-jdk
$ sudo apt-get install libcommons-cli-java
$ sudo apt-get install libcommons-io-java
$ sudo apt-get install libjdom-java
commons-cli.jar,commons-io.jar,jdom.jar が/usr/share/java 以下にインストールされます。
2) xml-normalizer.tar.gz を展開して ant
$ wget http://osima.jp/java/src/xml-normalizer.tar.gz
$ tar xfz xml-normalizer.tar.gz
$ cd xml-normalizer
$ ant
使い方
java -jar xml-normalizer.jar [--pretty|--compact|--removedoctype|--unixstylelineseparator] XMLファイル
- --pretty または --compact のいずれかを一方を指定
- --removedoctype は、--pretty または --compact と同時に指定可能
- --unixstylelineseparator は改行コードを常にUNIXスタイルにする
使い方(1)
人間が読みやすい形式に整形したいXML文書が sample.xml である場合、以下のようにします。
$ java -jar xml-normalizer.jar --pretty sample.xml
※結果は、sample.xml に上書きされます。
文字エンコーディングは、入出力ともに UTF-8 に固定されています。
UTF-8 以外の文字コードで処理したい場合は、ソースを修正してください。
(--pretty オプションはデフォルトなので) --pretty オプションを省略しても結果は同じです。
unixstylelineseparator オプション
改行コードを常にUNIXスタイル(\n)にします。
指定しない場合は、java.lang.System.getProperty("line.separator") の値を使用します。
Cygwin上で(改行コードをUNIXスタイルでインストールしている場合で) diff ,patch を使う場合に、 Windows標準の改行ではうまく patch をあてることができないため、この機能を追加しました。
使い方(2)
コンパクトな形式での出力を得る。
$ java -jar xml-normalizer.jar --compact sample.xml
--compact オプションを指定すれば、コンパクトな形式で出力します。
※結果は、sample.xmlに上書きされます。
使い方(3)
DOCTYPE宣言だけ削除したXML文書を得る。
$ java -jar xml-normalizer.jar --removedoctype sample.xml
※結果は、sample.xmlに上書きされます。
使い方(3-1)
DOCTYPE宣言だけ削除したXML文書を得る。(別の方法)
$ java -cp xml-normalizer.jar myxml.RemoveDoctype sample.xml
使い方(3)と効果は同じですが、内部処理方法が違うため、 使い方(3)で諸事情により エラーが起きて処理できないケースでもこちらで処理できる場合があります。
使い方(4)
XML文書中のコメントを削除する。
$ java -jar xml-normalizer.jar --removecomment sample.xml
※結果は、sample.xmlに上書きされます。
その他の使い方
DOCTYPE宣言だけを取り出します。(標準出力する。)
$ java -cp xml-normalizer.jar myxml.GetDoctype sample.xml
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">