Самый простой способ добавить DOCTYPE в Scala XML? - PullRequest
5 голосов
/ 30 марта 2011

Как я могу сделать этот миминал HTML5 в Scala XML: <!DOCTYPE html><title></title><p></p></html>?

Конечно, просто сделать HTML-подобный XML в Scala:

> 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 в памяти.Выглядело как слишком большая церемония.

Использование Атрибут ,

> import scala.xml.{Null, Text, Attribute}
> val d = <html /> % Attribute(None, "!DOCTYPE", Text(""), Null)
d: scala.xml.Elem = <html !DOCTYPE=""></html>

, который является близким, но не префиксным атрибутом и с непослушным назначением.

Ответы [ 2 ]

4 голосов
/ 30 марта 2011

Вы можете использовать метод записи XML, который принимает файл java.io.Writer вместо файла. Использование 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 голосов
/ 31 марта 2011

Вы не можете добавить тег doctype в структуры scala xml, но вы можете вставить его, когда превращаете в строку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...