将DOCTYPE添加到Scala XML的最简单方法? [英] Simplest way to add DOCTYPE to Scala XML?

查看:112
本文介绍了将DOCTYPE添加到Scala XML的最简单方法?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何在Scala XML中创建这个miminal HTML5:
<!DOCTYPE html>< title>< / title>< p>< / p>< / html>

How can I make this miminal HTML5 in Scala XML: <!DOCTYPE html><title></title><p></p></html>?

当然,在Scala中制作类似HTML的XML非常简单:

Of course it's simple to make an HTML-like XML in Scala:

> val html = <html><title></title><p></p></html>
html: scala.xml.Elem = <html><title></title><p></p></html>

但是,如何注入 DOCTYPE 属性前缀 html 标签?

However, how can I inject a DOCTYPE attribute prefixed in the html tag?

我试过的两条路线:

使用 scala.xml.Document scala.xml.DocType ,但两者似乎都基于写出文件或流,而我只是将这个XML对象保存在内存中。看起来像太多仪式。

Two routes I tried:
Using the scala.xml.Document and scala.xml.DocType, but both seemed predicated on writing out a file or stream, whereas I'm just keeping this XML object in memory. Seemed like too much ceremony.

使用 1601677>属性

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

这是关闭的,但不是带前缀的属性和顽皮的作业。

which is close, but not a prefixed attribute and with a naughty assignment.

推荐答案

您可以使用XML的write方法来获取java.io.Writer而不是File。使用java.io.StringWriter是直截了当的:

You can use XML's write method that takes a java.io.Writer instead of a File. Using java.io.StringWriter is straight forward:

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的最简单方法?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆