将DOCTYPE添加到Scala XML的最简单方法是什么?
问题描述:
我该如何在Scala XML中创建这个最底层的HTML5: <!DOCTYPE html><title></title><p></p></html>
?将DOCTYPE添加到Scala XML的最简单方法是什么?
当然它的简单,使Scala中类似HTML的XML:
> val html = <html><title></title><p></p></html>
html: scala.xml.Elem = <html><title></title><p></p></html>
但是,我怎么能注入DOCTYPE
属性在html
标签前缀?
两条路线我想:
使用scala.xml.Document
和scala.xml.DocType
,但两者似乎前提上写出一个文件或流,而我只是保持该XML对象在内存中。看起来像太多的仪式。
使用Attribute,
> import scala.xml.{Null, Text, Attribute}
> val d = <html /> % Attribute(None, "!DOCTYPE", Text(""), Null)
d: scala.xml.Elem = <html !DOCTYPE=""></html>
这是接近,但不是一个前缀属性和一个顽皮的分配。
答
您可以使用带有java.io.Writer而不是File的XML写入方法。使用java.io.StringWriter中是直截了当:
val w = new java.io.StringWriter()
val html = <html><body><p>Que pasa?!</p></body></html>
xml.XML.write(w, html, "UTF-8", xmlDecl = false, doctype =
xml.dtd.DocType("html", xml.dtd.SystemID("about:legacy-compat"), Nil))
w.toString
答
可以DOCTYPE标签不添加到Scala的XML结构,但是当你把它变成一个字符串,你可以把它注射。
希望有一个不那么牵扯的方式,但是四条线对于正在做的事情并不多。 – Noel 2011-03-31 19:44:06