問題があります。私は醜い 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 メソッドを呼び出してプロパティ名を取得しています。
しかし、質問はまだ興味深いです。