使用Groovy Script基于其他标记读取XML标记值

时间:2017-04-13 03:28:12

标签: xml groovy

我是Groovy脚本的新手,我需要一些帮助来获取基于不同标记的标记值。 以下是我通过SOAP从我的应用程序收到的响应。

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soap:Body>
  <DataResponse xmlns="http://eh.dummy.com">
     <onlinePartyData xmlns="">
        <tabs xmlns="http://eh.dummy.com">
           <tabs_InnerSet>
              <Tabs_InnerSet_TupleType>
                 <tab>
                    <DISPLAY_TEXT>DESCRIPTION 1</DISPLAY_TEXT>
                    <qsets>
                       <qsets_InnerSet>
                          <Qsets_InnerSet_TupleType>
                             <qset>
                                <SET_CD>QS1</SET_CD>
                                <VISIBLE>true</VISIBLE>
                             </qset>
                          </Qsets_InnerSet_TupleType>
                          <Qsets_InnerSet_TupleType>
                             <qset>
                                <SET_CD>QS2</SET_CD>
                                <VISIBLE>true</VISIBLE>
                             </qset>
                             <qset>
                                <SET_CD>QS3</SET_CD>
                                <VISIBLE>false</VISIBLE>
                             </qset>
                          </Qsets_InnerSet_TupleType>

                       </qsets_InnerSet>
                    </qsets>
                 </tab>
              </Tabs_InnerSet_TupleType>
           </tabs_InnerSet>
        </tabs>
     </onlinePartyData>
  </DataResponse>
</soap:Body>
</soap:Envelope>

如果VISIBLE节点为true,我需要连接SET_CD标记值。在这个例子中,我需要输出我的groovy脚本作为QS1,QS2。我怎样才能做到这一点?

谢谢!

1 个答案:

答案 0 :(得分:0)

以下是查询xml VISIBLE = true并获取SET_CD值并加入它们的脚本。

请注意,问题中提供的xml格式不正确。修复了测试时的问题。

Groovy脚本

//Pass the xml string to parseText method
def parsedXml = new XmlSlurper().parseText(xml)
def result = parsedXml.'**'.findAll {it.VISIBLE == true}.SET_CD.join(',')
println result
assert result instanceof String 

如果您想在线快速尝试 Demo