Guest User

Untitled

a guest
Feb 21st, 2018
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.27 KB | None | 0 0
  1. import javax.xml.stream.*
  2.  
  3. n = 5
  4. input = "input.xml"
  5. output = "output_%04d.xml"
  6. eventFactory = XMLEventFactory.newInstance()
  7. fileNumber = elementCount = elements = 0
  8.  
  9. def createEventReader() {
  10. reader = XMLInputFactory.newInstance().createXMLEventReader(new FileInputStream(input))
  11. start = reader.next()
  12. root = reader.nextTag()
  13. firstChild = reader.nextTag()
  14. return reader
  15. }
  16.  
  17. def createNextEventWriter () {
  18. println "Writing to '${filename = String.format(output, ++fileNumber)}'"
  19. writer = XMLOutputFactory.newInstance().createXMLEventWriter(new FileOutputStream(filename))
  20. writer.add(start)
  21. writer.add(root)
  22. return writer
  23. }
  24.  
  25. elements = createEventReader().findAll { it.startElement && it.name == firstChild.name }.size()
  26. println "Splitting ${elements} <${firstChild.name.localPart}> elements into ${n} pieces"
  27. writer = createNextEventWriter()
  28. writer.add(firstChild)
  29. createEventReader().each { event -> // do the actual splitting
  30. if (event.startElement && event.name == firstChild.name) {
  31. if (++elementCount > (elements / n)) {
  32. writer.add(eventFactory.createEndDocument())
  33. writer = createNextEventWriter()
  34. elementCount = 0
  35. }
  36. }
  37. writer.add(event)
  38. }
Add Comment
Please, Sign In to add comment