1

我有问题。我希望有很好的动态 groovy 类来表示丑陋的 XML 结构(不幸的是,JAXB、XmlBeans 等是不可能的)。为此,我需要区分大小写的属性来将元素值从 XML 映射到我的类。

但是由于 JavaBeans 规范,Groovy 会自动生成小写的属性名称。

我可以覆盖此功能并保留我的属性吗?

谢谢

这是一个例子:

源 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 回答