- PR -

XMLパーサの使い分けについて

1
投稿者投稿内容
はまさん
常連さん
会議室デビュー日: 2004/12/07
投稿数: 20
投稿日時: 2004-12-08 18:33
はじめまして。はまのっぷーと申します。

非常に素人的な質問で失礼します。
現在、XMLパーサでCrimsonとXercesを使おうと考えているのですが、
色々調べても使い分け方法がわかりません。

コンパイル時のパスを変更することで使い分けできるものなのでしょうか。
それとも、import文を変更する、parse時に使用するクラスを呼び分ける、
といったコードの記述が必要なのでしょうか。

理想としては、
1クラス内にCrimsonとXercesのそれぞれのパーサでparseするメソッドを準備しておいて、
そのメソッドの呼び分けで使い分けできればいいな、と考えております。

申し訳ございませんが、少しでも構いませんので何かアドバイスを頂ければ幸いです。
以上、よろしくお願いいたします。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2004-12-08 20:02
Javadocに詳しく書いてあります。
DocumentBuilderFactory#newInstance
を見てください。

http://www.utj.co.jp/xml/dev/java/dxjava_1.html
これも参考になるかも。。。
がんばってください。
はまさん
常連さん
会議室デビュー日: 2004/12/07
投稿数: 20
投稿日時: 2004-12-09 08:53
投稿ありがとうございます。
参考にして試してみます。
はまさん
常連さん
会議室デビュー日: 2004/12/07
投稿数: 20
投稿日時: 2004-12-09 10:26
かつのりさん、ありがとうございます。
ご教授いただいたHPで理解することができました。

HPには、Systemプロパティの切替でXMLパーサの使い分けができるとかかれていましたが、
Systemプロパティの切替無しでパーサを使い分けできないものなのでしょうか。。

もし、どなたかSystemプロパティ切替を行わずに
XMLパーサを切り替える手段をご存知でしたらお教えください。
よろしくお願いいたします。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2004-12-09 11:09
DocumentBuilderFactoryのnewInstanceメソッドは、
Javadocに書いているとおりに実装クラスのインスタンスを生成しますが、
実装クラスを各種プロパティから参照し、見つかればクラス名を使用して、
Class#forNameとClass#newInstanceでインスタンス生成を行っています。

コード:
public class DocumentBuilderFactories{

	public static final DocumentBuilderFactory CRIMSON;
	public static final DocumentBuilderFactory XERCES;

	static{
		try{
			CRIMSON = (DocumentBuilderFactory) Class.forName("crimsonの実装クラス名").newInstance();
			XERCES = (DocumentBuilderFactory) Class.forName("xercesの実装クラス名").newInstance();
		}catch(Exception e){
			throw new XXXException(e);		//RuntimeException系を投げる
		}
	}
}

class Test{

	DocumentBuilder cr = DocumentBuilderFactories.CRIMSON.newDocumentBulder();
	DocumentBuilder xr = DocumentBuilderFactories.XERCES.newDocumentBulder();
}




こんな感じで、DocumentBuilderFactory実装クラスのインスタンスを
直接生成してみてはいかがでしょうか。
はまさん
常連さん
会議室デビュー日: 2004/12/07
投稿数: 20
投稿日時: 2004-12-09 11:44
引用:

こんな感じで、DocumentBuilderFactory実装クラスのインスタンスを
直接生成してみてはいかがでしょうか。



うまく実装できました!
かつのりさん、本当にありがとうございました。
1

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