■XML整形の要件

内容がない場合、開始タグと閉じタグを両方記述するのではなく、空欄タグを記述する。
1:内容が空欄のタグ
通常
<TestName>AAAAAA</TestName>
空タグ
<TestName></TestName>
整形後
<TestName />
2:中身のないグループタグも同様
という要件が存在し、以下のコマンドを行うと整形は出来る。
cat in.xml | env XMLLINT_INDENT=' ' xmllint --format - > out.xml
ただし、最後に出力するXMLの中身を改行せずに一行にしたい場合は
どうしたらいいでしょうか?
1:整形後のXMLファイル内
通常
<TestName>AAAAAA</TestName>
<TestName />
整形後
<TestName>AAAAAA</TestName><TestName />

回答の条件
  • 1人3回まで
  • 登録:2008/03/05 03:46:44
  • 終了:2008/03/12 03:50:02

回答(3件)

id:pahoo No.1

pahoo回答回数5960ベストアンサー獲得回数6332008/03/05 06:52:26

ポイント27pt

xmllintの出力に対し、sedかperlで改行を削除してはいかがでしょうか。方法は下記を参照ください。

id:hopefully

ありがとうございます。

2008/03/05 12:58:36
id:t_shiono No.2

t_shiono回答回数256ベストアンサー獲得回数222008/03/05 05:42:08

ポイント27pt

こんなのはどうでしょうか?

単に出力から改行文字を除いているだけですが。

cat in.xml | env XMLLINT_INDENT=' ' xmllint --format - | tr -d "\r\n" > out.xml

参考:

http://blog.enjoitech.jp/detail.php?aid=69

id:hopefully

なるほど。

ありがとうございます。

ですが、最終的にファイルの改行をCRLFにしたい場合は

出来ますか?

これだと中身はすべてLFですか?

2008/03/05 12:57:52
id:t_shiono No.3

t_shiono回答回数256ベストアンサー獲得回数222008/03/05 16:24:37

ポイント26pt

コメントが開いていないので、回答欄で失礼します。

tr -d "\r\n"

の処理はすべてのCRとLFを除去するので、xmllintの出力の改行コードが、CR+LFでも、LFでも対応可能です。

参考で挙げたURLでは、CR+LFをLFに変換するということになっていますが、CRだけではなく、LFも削除してしまえば、CR+LFでもLFでも改行はなくなります。

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません