Guest User

Untitled

a guest
Jan 21st, 2018
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.54 KB | None | 0 0
  1. import javax.xml.parsers.SAXParserFactory
  2. import org.xml.sax.helpers.DefaultHandler
  3. import org.xml.sax.InputSource
  4. import groovy.xml.MarkupBuilder
  5.  
  6. def getDSLString(File xml, Writer w, String indent = ' ') {
  7. def handler = new GroovyMarkupDSLHandler(w, indent)
  8. def reader = SAXParserFactory.newInstance().newSAXParser().xmlReader
  9. reader.contentHandler = handler
  10. reader.parse(new InputSource(xml.newInputStream()))
  11. }
  12.  
  13. def s1 = new StringWriter()
  14. getDSLString(new File('test1.xml'), s1)
  15. def expected1 = '''\
  16. root {
  17. a {
  18. b {
  19. c {
  20. }
  21. }
  22. }
  23. }'''
  24. assert expected1 == s1.toString()
  25. // 逆変換(一旦DSLにしたものをMarkupした結果のXMLと元のXMLを比較)
  26. assert new File('test1.xml').text == Eval.me("""
  27. def sw = new StringWriter()
  28. def xml = new groovy.xml.MarkupBuilder(sw)
  29. xml.doubleQuotes = true
  30. xml.${s1.toString()}
  31. sw.toString()
  32. """)
  33.  
  34. def s2 = new StringWriter()
  35. getDSLString(new File('test2.xml'), s2, ' '*4) // タブ=スペース*4
  36. def expected2 = '''\
  37. root {
  38. a(hoge: 'val1', fuga: 'val2') {
  39. }
  40. b {
  41. }
  42. c(hoge: 'val3') {
  43. d {
  44. mkp.yield('val4')
  45. }
  46. e {
  47. f(hoge: 'val5') {
  48. mkp.yield('ばりゅー6')
  49. }
  50. }
  51. }
  52. }'''
  53. assert expected2 == s2.toString()
  54. // 逆変換(一旦DSLにしたものをMarkupした結果のXMLと元のXMLを比較)
  55. assert new File('test2.xml').text == Eval.me("""
  56. def sw = new StringWriter()
  57. def xml = new groovy.xml.MarkupBuilder(sw)
  58. xml.doubleQuotes = true
  59. xml.${s2.toString()}
  60. sw.toString()
  61. """)
Add Comment
Please, Sign In to add comment