def filename = "C:\\test.xml" // will create a file on your system here!
def example="""
<contacts>
<campuscontact>
<firstname>Jane</firstname>
<lastname>Doe</lastname>
<storenumber>123</storenumber>
</campuscontact>
<campuscontact>
<firstname>Mike</firstname>
<lastname>Jones</lastname>
<storenumber>789</storenumber>
</campuscontact>
<campuscontact>
<firstname>Joe</firstname>
<lastname>Smith</lastname>
<storenumber>555</storenumber>
</campuscontact>
</contacts>"""
def nodes = new XmlParser().parseText(example)
def filterBy = ['555','123']
inList = nodes.CampusContact.grep {it.StoreNumber.text() in filterBy}
notInList = nodes.CampusContact.grep {!(it.StoreNumber.text() in filterBy)}
assert inList.size() == 2
assert notInList.size() == 1
//or
notInList = nodes.CampusContact.grep {!(it in inList)}
assert notInList.size() == 1
new PrintWriter(filename).with {
append("<root>\n")
p = new XmlNodePrinter(delegate)
p.preserveWhitespace = true
p.namespaceAware = false
inList.each { p.print(it) }
append("</root>").close()
}
/*
<root>
<campuscontact>
<firstname>Jane</firstname>
<lastname>Doe</lastname>
<storenumber>123</storenumber>
</campuscontact>
<campuscontact>
<firstname>Joe</firstname>
<lastname>Smith</lastname>
<storenumber>555</storenumber>
</campuscontact>
</root>
*/
http://groovyconsole.appspot.com/script/447002
No comments:
Post a Comment