2017-04-25 5 views
0

Ich möchte den folgenden DOCTYPE meiner HTML-E-Mail mit groovy hinzufügen.Wie füge ich hinzu? DOCTYPE zu meinem HTML mit groovy

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

Mein groovycode beginnt wie folgt aus:

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

Ich habe versucht, die MarkupBuilderHelper zu verwenden, aber ich don‘whant die XML-Deklaration. Dies ist der Code, den ich mit MarkupBuilderHelper verwendet habe und es scheint nicht ohne die Deklaration zu funktionieren.

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

/Therese

+0

Gerade diese Zeichenfolge auf das endgültige Dokument vorangestellt indiskutabel ist? – cfrick

+0

Ich verstehe nicht, was du meinst. Es tut uns leid. : - | – Therese

+0

Sie sollten StreamingMarkupBuilder verwenden können –

Antwort

0

So etwas mit 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!') 
      } 
     } 
    } 
} 

Ein alternaive:

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() 
    } 
} 
+0

Danke, dass du dir Zeit genommen hast. Dies funktionierte genauso wie mit dem MarkupBuilderHelper. Ich bekomme den XML-Header und möchte nur den DOCTYPE haben. – Therese

+0

@Therese loswerden der 'mkp.yieldUnescaped ' \ N'' Linie? –

+0

Ich habe Ihre Lösung versucht und es funktioniert, aber alle Formatierungen wie neue Zeile verschwinden. Das HTML wird in einer langen Textzeile angezeigt. Aber ich muss das akzeptieren. Du gewinnst etwas und du verlierst etwas ?! :-) Liegt es daran, dass Sie den StreamingMarkupBuilder anstelle des MarkupBuilders verwenden? – Therese

0

Es sieht wie ein Fehler. yieldUnescaped funktioniert innerhalb einer Closure (innerhalb eines Tags) oder nach einer XML-Deklaration, aber nicht zum Generieren einer ersten Top-Level-Anweisung.

+0

Soll ich einfach akzeptieren, dass ich nicht tun kann, was ich will? – Therese

+0

Ich würde fragen, warum interessieren Sie sich für die xmlDeclaration? Es kann nicht weh tun, oder? – JBaruch

+0

Ich dachte, es könnte einen Unterschied machen, wenn ich in verschiedenen Clients mejl öffne. Aber ich weiß nicht, ob es wichtig ist. – Therese

Verwandte Themen