fork download
  1. def xml = """<Response>
  2. <PropertyDef>
  3. <Property1>
  4. <e>
  5. <Name>Prop1-1</Name>
  6. <ID>1</ID>
  7. </e>
  8. <e>
  9. <Name>Prop1-2</Name>
  10. <ID>2</ID>
  11. </e>
  12. </Property1>
  13. <Property2>
  14. <e>
  15. <Name>Prop2-1</Name>
  16. <ID>11</ID>
  17. </e>
  18. <e>
  19. <Name>Prop2-2</Name>
  20. <ID>22</ID>
  21. </e>
  22. </Property2>
  23. </PropertyDef>
  24. <Propertyvalues>
  25. <e>
  26. <value1>3.0</value1>
  27. <references>
  28. <prop1>1</prop1>
  29. <prop2>11</prop2>
  30. </references>
  31. <value2>5</value2>
  32. </e>
  33. <e>
  34. <value1>4.0</value1>
  35. <references>
  36. <prop1>1</prop1>
  37. <prop2>22</prop2>
  38. </references>
  39. <value2>4</value2>
  40. </e>
  41. <e>
  42. <value1>6.0</value1>
  43. <references>
  44. <prop1>2</prop1>
  45. <prop2>11</prop2>
  46. </references>
  47. <value2>1</value2>
  48. </e>
  49. </Propertyvalues>
  50.  
  51. </Response>"""
  52. def pxml = new XmlSlurper().parseText(xml)
  53. def alles = pxml.'**'.findAll{it.name() == 'prop2' && it == 11}*.parent()*.parent()
  54. alles.each { println groovy.xml.XmlUtil.serialize(it)}
  55. def result = alles.collect{ it.value1.text() as float }.sum()
  56. println "Sum of the values : $result"
  57.  
Success #stdin #stdout 1.5s 4456448KB
stdin
Standard input is empty
stdout
<?xml version="1.0" encoding="UTF-8"?><e>
  <value1>3.0</value1>
  <references>
    <prop1>1</prop1>
    <prop2>11</prop2>
  </references>
  <value2>5</value2>
</e>

<?xml version="1.0" encoding="UTF-8"?><e>
  <value1>6.0</value1>
  <references>
    <prop1>2</prop1>
    <prop2>11</prop2>
  </references>
  <value2>1</value2>
</e>

Sum of the values : 9.0