JDOMによるxmlファイルの解析
3434 ワード
JDOMによるxmlファイルの解析
JDOMは、ツリー型構造に基づいて、XMLドキュメントの解析、生成、シーケンス化、およびさまざまな操作を純粋なJAVAテクノロジーで実現するオープンソースプロジェクトです.JDOMは直接JAVAプログラミングサービスを提供します.より強力なJAVA言語の多くの特性(方法の再ロード、集合概念、マッピング)を利用して、SAXとDOMの機能を効果的に結合しています.JDOMの公式アドレス:http://www.jdom.org/参考:馬兵士設計モデル工場モデル1.まず1つのインタフェースと2つのクラスを新設し、後続の準備を行う
[Moveable.java]
[Plane.java]
[Train.java]
2.新しいインタフェースを作成します.メインプログラムはgetBeanメソッドを呼び出し、対応するオブジェクトを取得できます.
3.解析するxmlファイルは以下の通りです.
4.ファイルの主クラスを解析し、BeanFactoryインタフェースを実現した.
5.メインプログラムTestMain呼び出し.
実験結果:
ソースコードのダウンロードアドレス:http://download.csdn.net/detail/nuptboyzhb/5756633
JDOMは、ツリー型構造に基づいて、XMLドキュメントの解析、生成、シーケンス化、およびさまざまな操作を純粋なJAVAテクノロジーで実現するオープンソースプロジェクトです.JDOMは直接JAVAプログラミングサービスを提供します.より強力なJAVA言語の多くの特性(方法の再ロード、集合概念、マッピング)を利用して、SAXとDOMの機能を効果的に結合しています.JDOMの公式アドレス:http://www.jdom.org/参考:馬兵士設計モデル工場モデル1.まず1つのインタフェースと2つのクラスを新設し、後続の準備を行う
[Moveable.java]
package com.njupt.zhb.test;
public interface Moveable {
void run();
}
[Plane.java]
package com.njupt.zhb.test;
public class Plane implements Moveable {
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println(" .....");
}
}
[Train.java]
package com.njupt.zhb.test;
public class Train implements Moveable{
@Override
public void run() {
System.out.println(" ....");
}
}
2.新しいインタフェースを作成します.メインプログラムはgetBeanメソッドを呼び出し、対応するオブジェクトを取得できます.
package com.njupt.zhb.test;
public interface BeanFactory {
Object getBean(String id);
}
3.解析するxmlファイルは以下の通りです.
<?xml version="1.0" encoding="UTF-8"?>
<beans>
<bean
id="train"
class="com.njupt.zhb.test.Train">
</bean>
<bean
id="plane"
class="com.njupt.zhb.test.Plane">
</bean>
</beans>
4.ファイルの主クラスを解析し、BeanFactoryインタフェースを実現した.
package com.njupt.zhb.test;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.input.SAXBuilder;
import org.jdom.xpath.XPath;
public class ClassPathXmlApplicationContext implements BeanFactory {
private Map<String, Object> mapContainer = new HashMap<String, Object>();// id
public ClassPathXmlApplicationContext(String fileName) throws Exception {
SAXBuilder sb = new SAXBuilder();
Document doc = sb.build(this.getClass().getClassLoader()
.getResourceAsStream(fileName));
Element root = doc.getRootElement();
List list = XPath.selectNodes(root, "/beans/bean");//
System.out.println(list.size());
for (int i = 0; i < list.size(); i++) {
Element bean = (Element) list.get(i);
String id = bean.getAttributeValue("id");// id
String clazz = bean.getAttributeValue("class");// class
Object o = Class.forName(clazz).newInstance();//Java ,
mapContainer.put(id, o);// map
System.out.println(id + " " + clazz);
}
}
@Override
public Object getBean(String id) {
return mapContainer.get(id);
}
}
5.メインプログラムTestMain呼び出し.
package com.njupt.zhb.test;
public class TestMain {
public static void main(String[] args) throws Exception {
BeanFactory f = new ClassPathXmlApplicationContext(
"com/njupt/zhb/test/sample.xml");
Object obj1 = f.getBean("train");// train
Moveable m1 = (Moveable)obj1;//
m1.run();
// //----------------------
Object obj2 = f.getBean("plane");
Moveable m2 = (Moveable) obj2;
m2.run();
}
}
実験結果:
2
train com.njupt.zhb.test.Train
plane com.njupt.zhb.test.Plane
....
.....
ソースコードのダウンロードアドレス:http://download.csdn.net/detail/nuptboyzhb/5756633