How to create childNodes within childnode in sopaui (Using Groovy)
SOLVED- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
How to create childNodes within childnode in sopaui (Using Groovy)
Hi,
I am trying to create a child nodes within a child node dynamically using groovy script as below:
<ns26:Entry> ns26:ContactType>ABPerson</ns26:ContactType> <ns26:FirstName>Axafoname</ns26:FirstName> <ns26:LastName>Bcaio</ns26:LastName> </ns26:Entry> <ns26:Entry> ns26:ContactType>ABPerson1</ns26:ContactType> <ns26:FirstName>Axafoname1</ns26:FirstName> <ns26:LastName>Bcaio12</ns26:LastName> </ns26:Entry>
and so on....total 10 users. I am creating these nodes dynamically under parent tag <ns26:Results> and my code looks like as below:
allRowsDataForCreatedParnters.find { String line -> if(line.contains(Ibnnumber)) { jsonObjectForPartner = jsonSlurper.parseText(line) parentnode = holderIban.getDomNode("//*:Results") xmldoc = parentnode.ownerDocument mainChild = parentnode.appendChild(xmldoc.createElement("ns26:Entry")) child = parentnode.appendChild(xmldoc.createElement("ns26:ContactType")) child2 = parentnode.appendChild(xmldoc.createElement("ns26:FirstName")) child3 = parentnode.appendChild(xmldoc.createElement("ns26:LastName")) //printing values dynamically child.appendChild(xmldoc.createTextNode(jsonObjectForPartner.ContactType)) child2.appendChild(xmldoc.createTextNode(jsonObjectForPartner.FirstName)) child3.appendChild(xmldoc.createTextNode(jsonObjectForPartner.LastName))
and my result is:
<ns26:Results> <Entry/> <ContactType/> <FirstName>Derek</FirstName> <LastName>Pace</LastName> <LinkID>XTHCQG</LinkID> <Entry/> <ContactType/> <FirstName>test</FirstName> <LastName>testvv</LastName>
I am not getting how to create main node "<ns26:Entry>". Can anyone help me to get result like below:
Expected:
<Parent Tag>
<Child Tag>
<elements>
<elements>
</child Tag>
<ns26:Results> -----Parent Tag <ns26:Entry> -- Child tag <ns:26ContactType/> <ns:26FirstName>Derek</FirstName> <ns:26LastName>Pace</LastName> <ns:26LinkID>XTHCQG</LinkID> </ns26:Entry> <ns26:Entry> <ns:26ContactType/> <ns:26FirstName>test</FirstName> <ns:26LastName>testvv</LastName> </ns26:Entry>
</ns26:Results>
Attached actul expected result screenhot for reference
Solved! Go to Solution.
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
It is a bit confusing "jsonSlurper.parseText(line)" Using json or xml?
Would you please provide sample input data and ouput (need not be exact data; but same structure.
It is easy create xml in groovy, see below sample to get some ideas.
https://mrhaki.blogspot.com/2009/10/groovy-goodness-creating-xml-with.html
Regards,
Rao.
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello,
Sorry, i might not have provided my query details clearly. here is my query details in short:
I just tried to get name spaces for the child nodes using below script line and got result successfully:
child = parentnode.appendChild(xmldoc.createElementNS(parentnode.getNamespaceURI(),"ContactType"))
and now my concern is could not able to wrapup my childnodes under
<ns:Entry>
-----
-----
</ns:Entry>
How to create this main child node "<ns:Entry>" ?
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Regards,
Rao.
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello,
Found the answer. I had to use the all children nodes 'appendChild' to main child node as follows:
allRowsDataForCreatedParnters.find { String line -> if(line.contains(Ibnnumber)) { jsonObjectForPartner = jsonSlurper.parseText(line) parentnode = holderIban.getDomNode("//*:Results") xmldoc = parentnode.ownerDocument childentry = parentnode.appendChild(xmldoc.createElementNS(parentnode.getNamespaceURI(),"Entry")) child = parentnode.appendChild(xmldoc.createElementNS(parentnode.getNamespaceURI(),"ContactType")) child2 = parentnode.appendChild(xmldoc.createElementNS(parentnode.getNamespaceURI(),"DateOfBirth")) child3 = parentnode.appendChild(xmldoc.createElementNS(parentnode.getNamespaceURI(),"FirstName")) child4 = parentnode.appendChild(xmldoc.createElementNS(parentnode.getNamespaceURI(),"LastName")) child5 = parentnode.appendChild(xmldoc.createElementNS(parentnode.getNamespaceURI(),"LinkID")) child6 = parentnode.appendChild(xmldoc.createElementNS(parentnode.getNamespaceURI(),"Prefix")) child7 = parentnode.appendChild(xmldoc.createElementNS(parentnode.getNamespaceURI(),"AddressLine1")) child8 = parentnode.appendChild(xmldoc.createElementNS(parentnode.getNamespaceURI(),"City")) child9 = parentnode.appendChild(xmldoc.createElementNS(parentnode.getNamespaceURI(),"Postal")) child10 = parentnode.appendChild(xmldoc.createElementNS(parentnode.getNamespaceURI(),"Gender_De")) child.appendChild(xmldoc.createTextNode(jsonObjectForPartner.ContactType)) childentry.appendChild(child) child2.appendChild(xmldoc.createTextNode(jsonObjectForPartner.DateOfBirth)) childentry.appendChild(child2) child3.appendChild(xmldoc.createTextNode(jsonObjectForPartner.FirstName)) childentry.appendChild(child3) child4.appendChild(xmldoc.createTextNode(jsonObjectForPartner.LastName)) childentry.appendChild(child4) child5.appendChild(xmldoc.createTextNode(jsonObjectForPartner.LinkID)) childentry.appendChild(child5) child6.appendChild(xmldoc.createTextNode(jsonObjectForPartner.Prefix)) childentry.appendChild(child6) child7.appendChild(xmldoc.createTextNode(jsonObjectForPartner.AddressLine1)) childentry.appendChild(child7) child8.appendChild(xmldoc.createTextNode(jsonObjectForPartner.City)) childentry.appendChild(child8) child9.appendChild(xmldoc.createTextNode(jsonObjectForPartner.PostalCode)) childentry.appendChild(child9) child10.appendChild(xmldoc.createTextNode(jsonObjectForPartner.Gender)) childentry.appendChild(child10)
Thank you so much @nmrao for your quick responses.
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
@SunkaraSuresh05 , it's great that you have found the solution but what i would recomend is to use function instead of writing same line again and again :
1. As it will help you to accomodate any update faster.
2. Also it wil reduce number of line.
3. It will increase code redability. 🙂
Click "Accept as Solution" if my answer has helped,
Remember to give "Kudos" 🙂 ↓↓↓↓↓
Thanks and Regards,
Himanshu Tayal
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thank you for your valuable suggestion.
