1

問題があります。私は醜い XML 構造を表現するために素敵なダイナミックな groovy クラスを持ちたいと思っています (残念ながら JAXB、XmlBeans などは不可能です)。この目標を達成するには、要素の値を XML からクラスにマップするために、大文字と小文字を区別するプロパティが必要です。

しかし、Groovy は JavaBeans 仕様により、自動的に小文字のプロパティ名を生成します。

この機能をオーバーライドして、自分のプロパティを保持できますか?

ありがとう

次に例を示します。

ソース XML は次のようになります。

<data>
<document>
    <linked name="MyDataObject">
        <datarow>
            <element name="Name"></element>
            <element name="CurrentTime"></element>
            <element name="abc"></element>
            <element name="UID"></element>
        </datarow>
    </linked>

    <!--
        Here are a lot of more of <element> and <linked> 
    -->

</document>
</data>

XmlParser で解析し、いくつかのクラスを個別のノードで動作させます。

class XMLMyDataObject extends MyXMLNodeBaseClassWithDynamicFunctionality {
String Name
String CurrentTime
String abc
String UID
}

小文字の名前によるこの例の結果: 2 つの要素しか見つかりません。

XMLMyDataObject.metaClass.properties ...

name                cannot find XML-Element
currentTime         cannot find XML-Element
abc                 find XML-Element
UID                 find XML-Element

私の現在の状況:

クラスの純粋な Java 部分を使用して、getDeclaredFields メソッドを呼び出してプロパティ名を取得しています。

しかし、質問はまだ興味深いです。

4

1 に答える 1

1

あなたが何をしているのか分かりません。通常、XmlParser または XmlSlurper を使用して Groovy で xml を解析しますが、プロパティの名前を小文字に変更するものはありません。

例:

def xml = """<person>
    <ADRESS>
        <PostalCode>43</PostalCode>
    </ADRESS>
</person>"""

new XmlParser().parseText(xml).ADRESS.PostalCode.text()
于 2010-10-29T09:18:03.250 に答える