Vik
Vik

Reputation: 9289

extracting part of xml and merge into another in groovy

my xml file name my.xml has contents like

<xml>
<parent a="1">
<child1>val1</child1>
<chid2>val2</child2>
</parent>

I need the part

<child1>val1</child1>
<chid2>val2</child2>

as is to insert into another xml file which has contents

 <xml>
    <parent a="1">
    <child1>val3</child1>
    <chid2>val4</child2>
    </parent>

to make it look like

 <parent a="1">
    <child1>val3</child1>
    <chid2>val4</child2>
    <child1>val1</child1>
    <chid2>val2</child2>
</parent>

Upvotes: 0

Views: 858

Answers (2)

J&#233;r&#233;mie B
J&#233;r&#233;mie B

Reputation: 11022

Try this :

import groovy.xml.XmlUtil

​def from = """<parent a="1">  
  <child1>val1</child1>   
  <child2>val2</child2>   
</parent>
"""

def to = """<parent a="1">     
  <child1>val3</child1>     
  <child2>val4</child2>     
</parent>"""

def fromxml = new XmlSlurper().parseText(from)  
def toxml = new XmlSlurper().parseText(to)  

toxml[0].children() << fromxml.children()

println XmlUtil.serialize(toxml)​

Upvotes: 2

injecteer
injecteer

Reputation: 20699

String s = """<parent a="1">
  <child1>val1</child1>
  <child2>val2</child2>
  </parent>"""

def xml = new XmlSlurper().parseText( s ) 
assert 'val1' == xml.child1.text()
assert 'val2' == xml.child2.text()
assert 'child2' == xml.child2.name()

Upvotes: 1

Related Questions