Index > XML文書のプリティプリント、および正規化ツール
Sun, October 4, 2009

XML文書のプリティプリント、および正規化ツール

XML文書を扱っていると人間が読みやすいようにインデント量を調整したり(プリティプリント)
XML文書の差分をとる/パッチをあてるなどの処理のために正規化(ノーマライズ)する必要が生じます。

このツール(xml-normalizer.jar)はそれらの処理を行うためのユーティリティです。

このツールを使えば、常に同じルールでインデント量/改行位置が決定されるので、 結果として、XML文書をdiff,patchすることが可能になります。

機能

内部でJDOMを使用して整形処理しています。

ダウンロード

変更履歴

ビルド方法

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ファイル

使い方(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">
 Twitter
follow me on Twitter
 Categories