我有一个将XML响应与JDBC查询进行比较的groovy脚本。我试图说明一个场景,我需要根据元素中的特定属性验证XML值。在Groovy中,如何获取具有XML中特定属性的元素中的值
这里是XML的例子:
<FormInstance id="Impairment_0111235228_2_174_477">
<FormName>NEW MEDICAL HISTORY NOTE</FormName>
<ProviderFormNumber>174</ProviderFormNumber>
<FormResponse id="Imapairment_477_6">
<QuestionNumber>477</QuestionNumber>
<QuestionText>ExamOne Rx</QuestionText>
<AnswerChoice>
<AnswerChoiceText>ExamOne Result</AnswerChoiceText>
<OLifEExtension VendorCode="08" ExtensionCode="ImpairmentAttributeType">LBL</OLifEExtension>
<OLifEExtension VendorCode="08" ExtensionCode="ImpairmentAttributeSeq">2</OLifEExtension>
</AnswerChoice>
<OLifEExtension VendorCode="08" ExtensionCode="ImpairmentSequence">1</OLifEExtension>
<OLifEExtension VendorCode="08" ExtensionCode="QuestionSequence">6</OLifEExtension>
</FormResponse>
</FormInstance>
正如你所看到的,有几个元素的名称为“OLifEExtension”,但具有独特ExtensionCode属性。我需要能够比较值的属性。例如,使用上面的XML,如果属性ExtensionCode = QuestionSequence,我希望看到的6
值我试图在我的脚本执行以下操作:
obj.questionSequence = xml.FormResponse.OLifEExtension.{'@ExtensionCode' == 'QuestionSequence'}
obj.questionSequence = xml.FormResponse.{it.name() == 'OLifEExtension' && [email protected] == 'QuestionSequence'}
obj.questionSequence = xml.FormResponse.OLifEExtension.{[email protected] == 'QuestionSequence'}
的语法上的所有3个例子似乎是正确的,因为我在运行脚本时没有遇到任何错误,但是当我输出结果时,它总是空的。
我也试过:
obj.questionSequence = xml.FormResponse.OLifEExtension[1]
这工作,但这里的问题是,QuestionSequence可能不会在同一个地点始终存在。它可能是位置0或2.所以,我真的需要它来处理属性名称。
此外,我正在使用的脚本的基础是对这个问题的回应,如果这是任何人都需要。
Compare JDBC Response to an XML Response where number of nodes vary and order could change?
预先感谢您的任何帮助。