Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import javax.xml.stream.*
- n = 5
- input = "input.xml"
- output = "output_%04d.xml"
- eventFactory = XMLEventFactory.newInstance()
- fileNumber = elementCount = elements = 0
- def createEventReader() {
- reader = XMLInputFactory.newInstance().createXMLEventReader(new FileInputStream(input))
- start = reader.next()
- root = reader.nextTag()
- firstChild = reader.nextTag()
- return reader
- }
- def createNextEventWriter () {
- println "Writing to '${filename = String.format(output, ++fileNumber)}'"
- writer = XMLOutputFactory.newInstance().createXMLEventWriter(new FileOutputStream(filename))
- writer.add(start)
- writer.add(root)
- return writer
- }
- elements = createEventReader().findAll { it.startElement && it.name == firstChild.name }.size()
- println "Splitting ${elements} <${firstChild.name.localPart}> elements into ${n} pieces"
- writer = createNextEventWriter()
- writer.add(firstChild)
- createEventReader().each { event -> // do the actual splitting
- if (event.startElement && event.name == firstChild.name) {
- if (++elementCount > (elements / n)) {
- writer.add(eventFactory.createEndDocument())
- writer = createNextEventWriter()
- elementCount = 0
- }
- }
- writer.add(event)
- }
Add Comment
Please, Sign In to add comment