fork(1) download
  1. def xml = """<Results>
  2. <ResultSet fetchSize="10">
  3. <Row rowNumber="1">
  4. <ORDERID>H001</ORDERID>
  5. <LINEID>L001</LINEID>
  6. <HOLDID>1</HOLDID>
  7. <HOLDNAME>HOLDA</HOLDNAME>
  8. <RELEASED_FLAG>N</RELEASED_FLAG>
  9. </Row>
  10. <Row rowNumber="2">
  11. <ORDERID>H001</ORDERID>
  12. <LINEID>L001</LINEID>
  13. <HOLDID>2</HOLDID>
  14. <HOLDNAME>HOLDB</HOLDNAME>
  15. <RELEASED_FLAG>N</RELEASED_FLAG>
  16. </Row>
  17. <Row rowNumber="3">
  18. <ORDERID>H001</ORDERID>
  19. <LINEID>3</LINEID>
  20. <HOLDID>3</HOLDID>
  21. <HOLDNAME>HOLDC</HOLDNAME>
  22. <RELEASED_FLAG>N</RELEASED_FLAG>
  23. </Row>
  24. </ResultSet>
  25. </Results>"""
  26.  
  27. def parsed = new XmlSlurper().parseText(xml)
  28. def map = ['requestPayload' : parsed.'**'.findAll{it.name() == 'Row'}
  29. .collect { element -> element.children().breadthFirst()*.name()
  30. .findAll { !element."$it".children().size() }
  31. .collectEntries { [(element."$it".name()): element."$it".text()] }
  32. }
  33. ]
  34.  
  35. println new groovy.json.JsonBuilder(map).toPrettyString()
Success #stdin #stdout 1.12s 4456448KB
stdin
Standard input is empty
stdout
{
    "requestPayload": [
        {
            "ORDERID": "H001",
            "LINEID": "L001",
            "HOLDID": "1",
            "HOLDNAME": "HOLDA",
            "RELEASED_FLAG": "N"
        },
        {
            "ORDERID": "H001",
            "LINEID": "L001",
            "HOLDID": "2",
            "HOLDNAME": "HOLDB",
            "RELEASED_FLAG": "N"
        },
        {
            "ORDERID": "H001",
            "LINEID": "3",
            "HOLDID": "3",
            "HOLDNAME": "HOLDC",
            "RELEASED_FLAG": "N"
        }
    ]
}