0

シンプルな Java ソース コードを生成するための Eclipse プラグインを開発します。最初に、XML ファイルを Java クラス コードに変換する必要があります。私はインターネットから Apache Velocity を見つけました。今はいくつかの簡単なもので遊んでいます。これは私の入力 XML ファイルです。

<?xml version= "1.0" encoding= "UTF-8" ?> 
<Content> 
<Class name= "Customer"  acc_modif="public"> 
<attributes>
 <attribute attribute_type= "String" attribute_name= "studentName"  attribute_acc_modifer="public"/> 
 <attribute attribute_type= "int"  attribute_name= "age"  attribute_acc_modifer="public"/> 
</attributes>

<constructors>
    <constructor con_acc_modifer="public" con_name="Student">

            <para para_type="String" para_name="studentName"/>
            <para para_type="int" para_name="age"/>
    </constructor>

    <constructor con_acc_modifer="public" con_name="Student">

            <para para_type="String" para_name="studentName"/>
            <para para_type="int" para_name="age"/>

    </constructor>
</constructors>
</Class> 

</Content>

そして、これは私のテンプレートファイルです:

## class .vm 
##apachi-3

import java.util.*; 

$class.acc_modif class $class.name { 

#foreach ( $att in $class.attributes ) 
   $att.attribute_acc_modifer $att.attribute_type $att.attribute_name; 
#end

#foreach ( $con in $class.constructors ) 
   $con.con_acc_modifer $con.con_name ( $con.para_type $con.para_name ) { ## Not working :(
}       
#end 
}

そして、出力は次のようになりました。

import java.util.*; 

public class Customer { 

public String studentName; 
public int age; 

public Student ( $con.para_type $con.para_name ) {   }       
public Student ( $con.para_type $con.para_name ) {   }       

}

学生コンストラクターが機能していません。「$con.para_type $con.para_name」の代わりに括弧内に別のループを使用する必要があると思いますが 、ここで別のループを使用する方法がわかりません (私は Apache Velocity の初心者です)。
速度教祖、助けてください!

4

1 に答える 1

2

その下に子供がいる<constructors>タグがどのようにあるかわかりますか?<constructor>

あなたはあなたの子供の<paras>ための親が必要です。<para>それなしでは大変な時間を過ごすでしょう。

それができたら、すでに実行したトリックを繰り返します。

JAXBがJDKの一部であるのに、なぜこれが必要なのだろうか。また、クラスを書くだけでは難しいのではないかと思います。これは、「自動化された」ソリューションの方が優れていると判断した場合の1つですが、その方法を理解するのにかかる時間は、単に座って入力を開始した場合に費やした時間よりも大幅に長くなります。 ?

<?xml version= "1.0" encoding= "UTF-8" ?> 
<Content> 
<Class name= "Customer"  acc_modif="public"> 
<attributes>
 <attribute attribute_type= "String" attribute_name= "studentName"  attribute_acc_modifer="public"/> 
 <attribute attribute_type= "int"  attribute_name= "age"  attribute_acc_modifer="public"/> 
</attributes>

<constructors>
    <constructor con_acc_modifer="public" con_name="Student">
        <parameters>
            <para para_type="String" para_name="studentName"/>
            <para para_type="int" para_name="age"/>
        </parameters>
    </constructor>

    <constructor con_acc_modifer="public" con_name="Student">
        <parameters>
            <para para_type="String" para_name="studentName"/>
            <para para_type="int" para_name="age"/>
        </parameters>
    </constructor>
</constructors>
</Class> 

</Content>

大文字と小文字の使用には一貫性がないと思います。1つを選び、それに固執します。

そしてあなたのテンプレート:

## class .vm 
##apachi-3

import java.util.*; 

$class.acc_modif class $class.name { 

#foreach ( $att in $class.attributes ) 
   $att.attribute_acc_modifer $att.attribute_type $att.attribute_name; 
#end

#foreach ( $con in $class.constructors ) 
   $con.con_acc_modifer $con.con_name ( 
   #foreach ($parameter in $parameters) # Not 100% sure of notation; I'll leave that for you
       $con.para_type, $con.para_name
   #end  
   ) {
}       
#end 
}
于 2012-07-01T13:50:49.983 に答える