Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import javax.xml.parsers.SAXParserFactory
- import org.xml.sax.helpers.DefaultHandler
- import org.xml.sax.InputSource
- import groovy.xml.MarkupBuilder
- def getDSLString(File xml, Writer w, String indent = ' ') {
- def handler = new GroovyMarkupDSLHandler(w, indent)
- def reader = SAXParserFactory.newInstance().newSAXParser().xmlReader
- reader.contentHandler = handler
- reader.parse(new InputSource(xml.newInputStream()))
- }
- def s1 = new StringWriter()
- getDSLString(new File('test1.xml'), s1)
- def expected1 = '''\
- root {
- a {
- b {
- c {
- }
- }
- }
- }'''
- assert expected1 == s1.toString()
- // 逆変換(一旦DSLにしたものをMarkupした結果のXMLと元のXMLを比較)
- assert new File('test1.xml').text == Eval.me("""
- def sw = new StringWriter()
- def xml = new groovy.xml.MarkupBuilder(sw)
- xml.doubleQuotes = true
- xml.${s1.toString()}
- sw.toString()
- """)
- def s2 = new StringWriter()
- getDSLString(new File('test2.xml'), s2, ' '*4) // タブ=スペース*4
- def expected2 = '''\
- root {
- a(hoge: 'val1', fuga: 'val2') {
- }
- b {
- }
- c(hoge: 'val3') {
- d {
- mkp.yield('val4')
- }
- e {
- f(hoge: 'val5') {
- mkp.yield('ばりゅー6')
- }
- }
- }
- }'''
- assert expected2 == s2.toString()
- // 逆変換(一旦DSLにしたものをMarkupした結果のXMLと元のXMLを比較)
- assert new File('test2.xml').text == Eval.me("""
- def sw = new StringWriter()
- def xml = new groovy.xml.MarkupBuilder(sw)
- xml.doubleQuotes = true
- xml.${s2.toString()}
- sw.toString()
- """)
Add Comment
Please, Sign In to add comment