- PR -

XMLの書き出しに関して

1
投稿者投稿内容
Face
常連さん
会議室デビュー日: 2003/06/22
投稿数: 43
投稿日時: 2003-06-22 01:24
現在、大学でJavaを用いることになり勉強しはじめたばかりで、
JavaのXMLの処理に関して非常に困っています。
お忙しい中申し訳ございませんが、助言のほうをいただけないでしょうか。

DOMにおいて、内容を操作した後のツリーをファイルに書き出したいのですが、
その書き出し方法をWeb上の情報で探してみたのですが、
XMLDocumentを用いる方法しか見つけることができませんでした。
とあるページに、この方法はSunのCrimsonというパーサーのAPIで
JAXPの一部ではないということであまりよくないと書かれていました。

そこで、他の方法でさがしているのですが、まったくみあたりません。

このファイルへのDOMツリーの書き出し方法について
XMLDocumentクラスを用いずに書き出す方法を
教えていただきたく思います。

よければこの方法を学習できる書籍やWeb上の情報を教えていただけないでしょうか。またJavaによるXMLの操作方法に関して学習できるページを
教えていただけないでしょうか。

よろしくお願いいたします。
R-55
常連さん
会議室デビュー日: 2003/03/13
投稿数: 29
投稿日時: 2003-06-22 14:33
javax.xml.transformパッケージあたりを使えばできます。

http://www.asahi-net.or.jp/~ps8a-okzk/xml/index.html

こちらのページでXMLやその周辺に関して解説しておられます。
Java Program Examples →  Serialize (JAXP 1.1)
とたどっていけば今回の参考になると思います。
TOPページ以外はすべて日本語で書かれているのでわかりやすく、
僕もいろいろ参考にさせていただきました。
unibon
ぬし
会議室デビュー日: 2002/08/22
投稿数: 1532
お住まい・勤務地: 美人谷        良回答(20pt)
投稿日時: 2003-06-23 11:46
unibon です。こんにちわ。
#XML は相当の初心者ですが。

引用:

R-55さんの書き込み (2003-06-22 14:33) より:
javax.xml.transformパッケージあたりを使えばできます。

http://www.asahi-net.or.jp/~ps8a-okzk/xml/index.html


私も以前に、このページ等を参考にさせてもらい、書き出しができました。
なお、その他、常套手段の例としては、
パッケージ中の典型的なクラス名で検索すると、
わりと具体的なコード例がヒットすることが多いです
(今回の場合は TransformerException などをキーワードにして)。
Face
常連さん
会議室デビュー日: 2003/06/22
投稿数: 43
投稿日時: 2003-06-24 04:57
ありがとうございました!
早速参考にさせていただきます。
R-55
常連さん
会議室デビュー日: 2003/03/13
投稿数: 29
投稿日時: 2003-06-26 01:04
R-55です。

もともとjavax.xml.transformパッケージがファイル書き出しのためだけの
APIでは無いためファイルの書き出しに特化したわかりやすい解説ページが
少ないですね。

できる限り簡潔に解説してみたつもりですがどうでしょうか?
もっと詳しい方、間違ってたらつっこみお願いします。

//import文はこうなります
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;


//以下書き出しメソッドの中身(実際にはExceptionをcatchしなければなりません)

//ベンダー間の差を吸収するためfactoryを作成後Transformer取得
TransformerFactory factory = TransformerFactory.newInstance();
//ここのスタイルシートを省略
Transformer transformer = factory.newTransformer();

//org.w3c.dom.Document型のdocumentをresult.xmlに書き出す
transformer.transform(new DOMSource(document)
            , new StreamResult("result.xml"));


これで書き出しはできるはずです。

本来はfactory.newTransformer()の引数にスタイルシートのSourceを与えることで
XMLの構成を組み替えながら書き出し等を行います。

javax.xml.transform以下にはdom、sax、streamパッケージがありそれぞれ
SourceとResultの実装クラスがあります。
transformer.transform(Source, Result)の2つの引数にそれらのクラスを
いろいろな組み合わせで与えることでSAXからDOMに変換したり、ファイルから
ファイルに変換したりできます。

今回はスタイルシート無しでTransformerを作成しDOMSourceとStreamResultを
与えたのでDOMからファイルへ変換なしでそのまま書き出しています。

なんか知ってること全部手短に説明しようとしたので後半は読みにくいかもしれません。
とにかく前半部分でファイル書き出しはできると思います。
それでは。
Face
常連さん
会議室デビュー日: 2003/06/22
投稿数: 43
投稿日時: 2003-07-02 11:42
わざわざありがとうございます!
なかなか解説が書いてなくてこまっていました。
参考にさせていただきます。
かなりわかりやすかったです。
これでファイルへの書き出しができそう・・・。
1

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