Ask a Question

How to create childNodes within childnode in sopaui (Using Groovy)

SOLVED
SunkaraSuresh05
New Contributor

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 

 

 

 

 

 

6 REPLIES 6
nmrao
Community Hero

Can you please provide the use case?
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.

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>" ?

 

 

Please refer earlier reply and answer the requested info which will help to understand the issue.


Regards,
Rao.

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. 

@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

Thank you for your valuable suggestion. 

cancel
Showing results for 
Search instead for 
Did you mean: