XMLをもらったけど、階層ツリーがむちゃくちゃでわからない
tidy -utf8 -i --input-xml true --indent-cdata true ./sample.xml
しかも昔にエントリ書いてるし。www
tidy のインストール。
- mac
- はじめから
- linux
- debian gnu/linuxは aptで
- windows
- コンパイル済みバイナリをどこかでダウンロードしてくる
- cygwin
- setup.exeや apt-cyg で
出力
takuya@air:~/Desktop$ tidy -q -xml sample.xml | head line 164 column 40 - Warning: replacing invalid character code 151 <?xml version="1.0" encoding="utf-8"?> <PMML version="4.0"> <Header copyright="BMRC"> <Application name="mclassify" version="1.0" /> <Timestamp>15 Jun 2010 17:54:26</Timestamp> </Header> <DataDictionary numberOfFields="7"> <DataField name="気温" optype="continuous" dataType="double"></DataField> <DataField name="湿度"
あちゃっ文字化けだ。*1
文字コードを指定する。
line 164 column 40 - Warning: replacing invalid character code 151
のように文字コードに問題があるときはちゃんと指定する。
-utf8オプションを付ける。
結果
takuya@air:~/Desktop$ tidy -q -utf8 -xml sample.xml | head <?xml version="1.0" encoding="utf-8"?> <PMML version="4.0"> <Header copyright="BMRC"> <Application name="mclassify" version="1.0" /> <Timestamp>15 Jun 2010 17:54:26</Timestamp> </Header> <DataDictionary numberOfFields="7"> <DataField name="気温" optype="continuous" dataType="double"> </DataField> <DataField name="湿度" optype="continuous" dataType="double">
インデントを指定する。
takuya@air:~/Desktop$ tidy -q -i -utf8 -xml sample.xml | head <?xml version="1.0" encoding="utf-8"?> <PMML version="4.0"> <Header copyright="BMRC"> <Application name="mclassify" version="1.0" /> <Timestamp>15 Jun 2010 17:54:26</Timestamp> </Header> <DataDictionary numberOfFields="7"> <DataField name="気温" optype="continuous" dataType="double"> </DataField> <DataField name="湿度" optype="continuous" dataType="double”>
余計なメッセージを消す。
標準エラーに出力される、メッセージがうざったいので消す。
-q : quiet 黙れ。
出力ファイルを指定する。
単純にリダイレクをする。
tidy -q -i -utf8 -xml sample.xml > neat.xml
または出力ファイルを指定する。
tidy -q -i -utf8 -xml -o neat.xml sample.xml
このときの注意点は、 -o text.xmlを sample.xml(入力ファイル)より先に指定する。
この指定がうざったい・・・
インデントの細かいオプションをつける。
タグの階層でインデントをする。
tidy -utf8 -i --input-xml true --indent-cdata true ./sample.xml
さらに属性でインデントもつけたい。
tidy -q -utf8 -i --input-xml true --indent-cdata true --indent-attributes true ./sample.xml
これで、インデントが属性にも適用されて読みやすくなる。
出力結果。
takuya@air:~/Desktop$ tidy -q -utf8 -i --input-xml true --indent-cdata true --indent-attributes true ./sample.xml | head -n 20 <?xml version="1.0" encoding="utf-8"?> <PMML version="4.0"> <Header copyright="BMRC"> <Application name="mclassify" version="1.0" /> <Timestamp>15 Jun 2010 17:54:26</Timestamp> </Header> <DataDictionary numberOfFields="7"> <DataField name="気温" optype="continuous" dataType="double"></DataField> <DataField name="湿度" optype="continuous" dataType="double"></DataField> <DataField name="天候" optype="categorical" dataType="string"> <Value value="晴れ" /> <Value value="曇り" /> <Value value="雨" />