0

Digester api を使用して、この下の XML ファイルから Java オブジェクトを作成するのを手伝ってくれませんか。

私はクラスを持っています会社はこのような地図を持っています

  Map<String,Department> nameToDeptMap= new HashMap<String,Department>();

以下の XML データをこのマップにロードします。

     Department is super class. Development,Testing,Requirment...etc are extending that class. 


    <Company>
    <Employee empname="xyz" department ="com.compnayname.departments.department.Development>
    <Employee empname="xyza" department ="com.compnayname.departments.department.Testing>
    <Employee empname="xyzab" department ="com.compnayname.departments.department.Requiremetns>
    <Employee empname="xyzabc" department ="com.compnayname.departments.department.Production>
     .
     .
     .
     .
    </Company>

マップがロードされたら、「empname」を渡して部門オブジェクトを取得します。

私のやり方を知りたい場合は、以下のコードを参照してください。私はそれが間違っていることを知っています。

私のJavaファイルはこのようなものです..

XML ファイルから値を文字列として取得するダイジェスター ルールを記述できますが、オブジェクトとして取得する方法がわかりません。

    Digester digester = new Digester();     
    digester.addObjectCreate("Company/Employee", Company.class);        
    digester.addCallMethod("Company/Employee", "setComapnyConfigMap", 2);
    digester.addCallParam("Company/Employee", 0, "empname");
    digester.addCallParam("Company/Employee", 1, "department");


           :> Using JDK 1.6 , commons-digester-2.0. 
4

2 に答える 2

0

これは Digester が意図していることではありません:

「多くのプロジェクトは、システム内のさまざまな Java オブジェクトの初期化を提供するために XML 構成ファイルを読み取ります。これを行うにはいくつかの方法があり、Digester コンポーネントは、多くの異なるプロジェクトで使用できる共通の実装を提供するように設計されています。」

あなたがやろうとしていることは、XStream や DOM 解析 (jdom または dom4j) のようなものを使用して、はるかに簡単に達成できます。

于 2014-09-30T16:13:15.357 に答える