- PR -

Domに関する処理について

1
投稿者投稿内容
Face
常連さん
会議室デビュー日: 2003/06/22
投稿数: 43
投稿日時: 2003-06-25 00:01
XMLをDOMで処理する場合、いろいろなやりかたがあると知り
みなさんがどのようにされているのか知りたく書き込ませていただきました。

http://www-6.ibm.com/jp/developerworks/xml/010316/j_x-jaxp.html
に次のようなことが書かれていました。

「JAXP の目的は、 パーサーを扱う際にベンダー独立性を実現することです。 JAXP を利用して、同じコードを Sun の XML パーサー、 Apache の Xerces パーサー、 または Oracle の XML パーサーで処理できるのです。 Sun のクラスだけに固定するのは良くありません。 JAXP の目的そのものに反します。」

しかし、本などを探しているとSunのCrimsonに依存する
XMLDocumentクラスを使っているものが多くありました。

Domに関する処理、特にファイルなどへの書き出しは
やはりJAXPを用いた方がいいのでしょうか?

みなさんの意見をお聞かせいただければとおもいます。

よろしくお願いいたします。
R-55
常連さん
会議室デビュー日: 2003/03/13
投稿数: 29
投稿日時: 2003-06-25 09:10
こんにちは。

最近はCrimsonよりもXercesの方が主流になりつつあるように感じますし、
今後またどうなるかというのも予想しきれるものではありません。

JDOMなど独自の仕様を使うのも一つの手だとは思いますがやはり
JAXPを用いた方が将来の変化に対応しやすいと僕は感じています。

僕もこのあたりは他の方の意見を聞いてみたいと思っていました。
latte
常連さん
会議室デビュー日: 2002/11/07
投稿数: 38
投稿日時: 2003-06-25 10:05
こんにちは。

私はJAXPを使うようにしています。

ベタにCrimsonなどのオブジェクトを操作してしまうと、
パーサの変更を行ったときにプログラムを変更しなければ
ならなくなります。

それと比較して、実際に使うパーサがCrimsonでもXercesでも、
JAXPを使っていれば、同じプログラムで
処理ができるので、便利だなぁと思っているからなんですけど。

Wata
ぬし
会議室デビュー日: 2003/05/17
投稿数: 279
投稿日時: 2003-06-25 10:35
こんにちは。Wataです。

引用:

latteさんの書き込み (2003-06-25 10:05) より:
それと比較して、実際に使うパーサがCrimsonでもXercesでも、
JAXPを使っていれば、同じプログラムで
処理ができるので、便利だなぁと思っているからなんですけど。



これはJAXPのような標準APIを使っているときのメリットですよね。
でも、各パーザによって微妙に動作の異なる部分があるので
思わぬ落とし穴にはまることがあります。

たとえば、CrimsonとXercesでは以下のコードを実行したときに
違いが出ます。
コード:
Element elem = doc.createElement("elem");
elem.setAttribute("attr",null);
System.out.println("attr=\"" + elem.getAttribute("attr") + "\"");


Crimsonでは attr="null"と表示され、
Xercesでは、attr="" となります。

この問題はさらにXalanでtransform使用としたときに顕著化され、
CrimsonではNullPointerExceptionが発生してしまいます。

#クラスパスの設定ミスからXerces, Crimson, Oracleのすべてのパーザを
#使う機会に恵まれました (^^;
#見事にはまりました。 隣と動作が違うのはナゼ〜 って
#ちなみにOracleも上のはnullになります。他にも違いが何かあったような。
latte
常連さん
会議室デビュー日: 2002/11/07
投稿数: 38
投稿日時: 2003-06-25 10:50
Wataさん こんにちは

引用:

これはJAXPのような標準APIを使っているときのメリットですよね。
でも、各パーザによって微妙に動作の異なる部分があるので
思わぬ落とし穴にはまることがあります。

たとえば、CrimsonとXercesでは以下のコードを実行したときに
違いが出ます。



うへぇ。。。そういうのがあるんですね。
私はXercesしか使っていないので、まだそういったことが
起きてないんですが、、、。

ユニットテストの出番って感じがしますね。

[ メッセージ編集済み 編集者: latte 編集日時 2003-06-25 10:51 ]
Face
常連さん
会議室デビュー日: 2003/06/22
投稿数: 43
投稿日時: 2003-06-25 11:44
いろいろな問題があるんですねぇー。

今までの書き込みを拝見させていただいていると
JAXPを利用されている方が多いようですがJAXPで
ファイルへの書き出しなどがWeb上の情報でないので
自分はなかなか理解できず困っています・・。

以前のスレッドで情報をいただいて参考にさせていただいたのですが
まだまだ理解できていません。
ファイルへの書き出しについて良い文献をご存知の
方がいらっしゃったらご指導お願いいたします。
1

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