2011-03-30 202 views
3

我該如何在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.Documentscala.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> 

這是接近,但不是一個前綴屬性和一個頑皮的分配。

回答

4

您可以使用帶有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 
+0

希望有一個不那麼牽扯的方式,但是四條線對於正在做的事情並不多。 – Noel 2011-03-31 19:44:06

0

可以DOCTYPE標籤不添加到Scala的XML結構,但是當你把它變成一個字符串,你可以把它注射。

相關問題