私は次のxmlコードを持っています:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<cms:RelatedConfigurationItemList xmlns:cms="some namespace">
<ConfigurationItem>
<name>data</name>
<id>data</id>
<type>data</type>
<relationship>IS CHILD OF</relationship>
<ConfigurationItemList>
<ConfigurationItem>
<name>data</name>
<id>data</id>
<type>data</type>
<relationship>IS CHILD OF</relationship>
<ConfigurationItemList/>
</ConfigurationItem>
<ConfigurationItem>
<name>data</name>
<id>data</id>
<type>data</type>
<relationship>IS CHILD OF</relationship>
<ConfigurationItemList/>
</ConfigurationItem>
</ConfigurationItemList>
</ConfigurationItem>
<ConfigurationItem>
<name>other data</name>
<id>other data</id>
<type>other data</type>
<relationship>IS CHILD OF</relationship>
<ConfigurationItemList>
<ConfigurationItem>
<name>other data</name>
<id>other data</id>
<type>other data</type>
<relationship>IS CHILD OF</relationship>
<ConfigurationItemList/>
</ConfigurationItem>
<ConfigurationItem>
<name>other data</name>
<id>other data</id>
<type>other data</type>
<relationship>IS CHILD OF</relationship>
<ConfigurationItemList/>
</ConfigurationItem>
</ConfigurationItemList>
</ConfigurationItem>
</cms:RelatedConfigurationItemList>
</soapenv:Body>
</soapenv:Envelope>
次の疑似コードを使用してGroovyで検証したいこと:
def request = testRunner.testCase.getTestStepByName( "relationship_request" )
def resp = new File('H://test_xml.xml')
def cms_ns = new groovy.xml.Namespace("namespace for cms",'cms')
def soap_ns = new groovy.xml.Namespace("http://schemas.xmlsoap.org/soap/envelope/",'soapenv')
def root = new XmlSlurper().parse(resp)
def config_item = root[soap_ns.Envelope][soap_ns.Body][cms_ns.RelatedConfigurationItemList][ConfigurationItem]
config_item.each{
it.name.each{
it == corresponding value in db?
else
die
}
}
しかし、データベースの応答に対して定義された値(名前など)を検証しようとするための構文、ロジックを正しく理解できないようです。config_item宣言が正しければ、Groovyクロージャについてよく理解していない可能性があります。また、XMLスラーパーまたはパーサーがより適切であり、違いが正確に何であるかを完全に特定することはできません。これが問題の適切な説明であることを願っています。