如何使用groovy将DOCTYPE添加到我的html中

时间:2017-04-25 07:55:31

标签: html groovy doctype

我想使用groovy将以下DOCTYPE添加到我的html电子邮件中。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional //EN" http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

我的groovycode就是这样开始的:

def responseDoc = job.addDocument("ECommerce_test.html"){out ->
def xmlWriter = new OutputStreamWriter(out)
MarkupBuilder html = new MarkupBuilder(xmlWriter)

我曾尝试使用MarkupBuilderHelper,但我没有使用xml声明。 这是我与MarkupBuilderHelper一起使用的代码,如果没有声明它似乎不起作用。

def helper = new groovy.xml.MarkupBuilderHelper(xml)
helper.xmlDeclaration([version:'1.0', encoding:'UTF-8', standalone:'no'])
helper.yieldUnescaped """<!DOCTYPE note SYSTEM "note.dtd">"""

/德兰

2 个答案:

答案 0 :(得分:1)

使用StreamingMarkupBuilder这样的东西?

import groovy.xml.*

def responseDoc = job.addDocument("ECommerce_test.html"){out ->
    out << new StreamingMarkupBuilder().bind {
        mkp.yieldUnescaped '<?xml version="1.0", encoding="UTF-8", standalone="no"?>\n'
        mkp.yieldUnescaped '<!DOCTYPE note SYSTEM "note.dtd">\n'
        html {
            body {
                h1('WOW!')
            }
        }
    }
}

替代方案:

import groovy.xml.*

job.addDocument("ECommerce_test.html"){out ->
    new StringWriter().with { sw ->
        new MarkupBuilder(sw).html {
            body {
                h1('WOW!')
            }
        }
        out << '<!DOCTYPE note SYSTEM "note.dtd">\n' << sw.toString()
    }
}

答案 1 :(得分:0)

它确实看起来像一个bug。 yieldUnescaped在闭包内(在标记内)或xml声明之后起作用,但不适用于生成第一个顶级语句。