我有一个问题。 我希望有一个很好的动态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方法的属性名称。
但问题仍然很有趣。
答案 0 :(得分:1)
不确定你在做什么。通常,您将使用XmlParser或XmlSlurper来解析Groovy中的xml,但这些都不会将属性的名称更改为小写。
示例:
def xml = """<person>
<ADRESS>
<PostalCode>43</PostalCode>
</ADRESS>
</person>"""
new XmlParser().parseText(xml).ADRESS.PostalCode.text()