- PR -

DOMツリーをXMLファイルへ書き出す時インデントをつけたい

投稿者投稿内容
けろたん
会議室デビュー日: 2002/01/21
投稿数: 10
投稿日時: 2002-01-21 11:43
XMLファイルを読み込み、内容を変更したDOMツリーを再び、、XMLファイルへと書き出したいのですが、タグの前にインデントが入らないので、とても読みにくいXMLになってしまいます。
使っているパーサーは、JAXPです。
何かうまい解決策はないかと考えましたが、JAVA自体も初心者なので、行き詰まってしまいました。
何か、いい方法があったら教えて下さい。すみません。
山中 正
ベテラン
会議室デビュー日: 2001/07/30
投稿数: 73
お住まい・勤務地: 大阪府
投稿日時: 2002-01-21 12:20
山中です。

引用:

けろたんさんの書き込み (2002-01-21 11:43) より:
XMLファイルを読み込み、内容を変更したDOMツリーを再び、、XMLファイルへと書き出したいのですが、タグの前にインデントが入らないので、とても読みにくいXMLになってしまいます。
使っているパーサーは、JAXPです。
何かうまい解決策はないかと考えましたが、JAVA自体も初心者なので、行き詰まってしまいました。
何か、いい方法があったら教えて下さい。すみません。



読みやすさだけの問題ですか?
それなら、IEでXMLファイルを表示すれば、勝手にインデントして見せてくれるので、それでOKじゃないか?と常日頃思っているのですが、ご期待にはそえませんか?
けろたん
会議室デビュー日: 2002/01/21
投稿数: 10
投稿日時: 2002-01-21 12:47
ご返答ありがとうございます。
IEで表示する分には問題がないのですが、xmlファイルを直接開く状況もあるので、
できれば、ファイル自体に読みやすいインデントを入れたいと思っています。
かなり難しいんでしょうか・・・?

現在、一行ずつ書き出して、エレメントのレベルに応じた数のスペースを入れるという
形を考えていましたが、時間がかかりすぎてしまうのと、再度DOMツリーを形成した際に、テキストデータの場合、おかしなスペースが入ってしまうのでこの方法は避けたいのですが・・・
miki
大ベテラン
会議室デビュー日: 2001/09/21
投稿数: 174
お住まい・勤務地: 東京都八王子市
投稿日時: 2002-01-21 14:25
com.sun.xml.tree.XmlDocumentを使えばインデント付きのファイルが作れます。
こんな感じ。

XmlDocument doc = new XmlDocument () ;
doc.appendChild(...);
doc.appendChild(...);
...
doc.write(writer, encoding)

ただし、sunのパッケージなのでお望みのものではないかも。
もっといい方法があったら私も知りたい。
けろたん
会議室デビュー日: 2002/01/21
投稿数: 10
投稿日時: 2002-01-21 14:59
ありがとうございます。
早速試してみたいと思います。
(もっと便利な方法があれば、そっちも試したいです!mikiさん同じく)

勉強不足で申し訳ないのですが、sunのHPで探したのですが,
packageがまだ見つけられていません。
もし、ご迷惑でなかったら、教えていただけますか?
申し訳ありません。
miki
大ベテラン
会議室デビュー日: 2001/09/21
投稿数: 174
お住まい・勤務地: 東京都八王子市
投稿日時: 2002-01-21 17:02
ちょっと調べてみたら、com.sun.xml.tree.XmlDocumentからorg.apache.crimson.tree.XmlDocumentにパッケージ名が変更になったようです。
crimson.jarに入っているので見てください。

[ メッセージ編集済み 編集者: miki 編集日時 2002-01-22 10:34 ]
けろたん
会議室デビュー日: 2002/01/21
投稿数: 10
投稿日時: 2002-01-22 09:19
早速試してみたいと思います。
すばやいご返答、ありがとうございました!!!
本当に助かりました。
後は,うまくJAVAをコーディングできれば・・・です。
がんばります!
けろたん
会議室デビュー日: 2002/01/21
投稿数: 10
投稿日時: 2002-01-28 15:05
またもや行き詰まってしまいました・・・・

インデントをつけることは成功しましたが、こんどは、そのインデントがネックになってしまっています。
ファイルを書き出すごとに、各エレメントの間に、改行が追加されていって、4〜5回更新すると、ものすごく見づらいファイルになってしまいます。
コーディングは、このような感じです。

/***

XmlDocument doc = new XmlDocument();
doc = (XmlDocument)document;
Element eUpdata = doc.getDocumentElement();
Writer writer = new BufferedWriter( new FileWriter(sFileName_) );
doc.write( writer, "Shift_JIS");
writer.close();

***/

これは、避けようがないのでしょうか??
それとも、作りに問題があるのでしょうか??
ご意見やアドバイスを聞かせてください。お願いします。

スキルアップ/キャリアアップ(JOB@IT)