Как помешать groovy создавать строчные (мета) имена свойств? - PullRequest
1 голос
/ 29 октября 2010

У меня проблема. Я хочу, чтобы у меня были классные динамические классы, представляющие некрасивую структуру XML (к сожалению, 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.

Но вопрос все еще интересен.

1 Ответ

1 голос
/ 29 октября 2010

Не уверен, что ты делаешь. Обычно вы используете XmlParser или XmlSlurper для анализа xml в Groovy, и ни один из них не изменит имена ваших свойств на строчные.

Пример:

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

new XmlParser().parseText(xml).ADRESS.PostalCode.text()
...