Here is an example of using Java's DOM facilities to create a new XML file:
// require(groupId:'xmlunit', artifactId:'xmlunit', version:'1.0') import javax.xml.parsers.DocumentBuilderFactory import org.custommonkey.xmlunit.* def addCar(document, root, name, make, year, country, type, text) { def car = document.createElement('car') car.setAttribute('name', name) car.setAttribute('make', make) car.setAttribute('year', year) root.appendChild(car) def countryNode = document.createElement('country') countryNode.appendChild(document.createTextNode(country)) car.appendChild(countryNode) def record = document.createElement('record') record.setAttribute('type', type) record.appendChild(document.createTextNode(text)) car.appendChild(record) } def builder = DocumentBuilderFactory.newInstance().newDocumentBuilder() def document = builder.newDocument() def root = document.createElement('records') document.appendChild(root) addCar(document, root, 'HSV Maloo', 'Holden', '2006', 'Australia', 'speed', 'Production Pickup Truck with speed of 271kph') addCar(document, root, 'P50', 'Peel', '1962', 'Isle of Man', 'size', 'Smallest Street-Legal Car at 99cm wide and 59 kg in weight') addCar(document, root, 'Royale', 'Bugatti', '1931', 'France', 'price', 'Most Valuable Car at $15 million') // now load in our XML sample and compare it to our newly created document def builder2 = DocumentBuilderFactory.newInstance().newDocumentBuilder() def inputStream = new ByteArrayInputStream(XmlExamples.CAR_RECORDS.bytes) def control = builder2.parse(inputStream) XMLUnit.setIgnoreWhitespace(true) def xmlDiff = new Diff(document, control) assert xmlDiff.similar()
We have used XMLUnit to compare the XML we created with our sample XML. To do this, make sure the sample XML is available, i.e. that the following class is added to your CLASSPATH:
XmlExamples.groovy
class XmlExamples {
static def CAR_RECORDS = '''
<records>
<car name='HSV Maloo' make='Holden' year='2006'>
<country>Australia</country>
<record type='speed'>Production Pickup Truck with speed of 271kph</record>
</car>
<car name='P50' make='Peel' year='1962'>
<country>Isle of Man</country>
<record type='size'>Smallest Street-Legal Car at 99cm wide and 59 kg in weight</record>
</car>
<car name='Royale' make='Bugatti' year='1931'>
<country>France</country>
<record type='price'>Most Valuable Car at $15 million</record>
</car>
</records>
'''
}
You may also want to see Using MarkupBuilder for Agile XML creation.






