将 DOCTYPE 添加到 Scala XML 的最简单方法?

Posted

技术标签:

【中文标题】将 DOCTYPE 添加到 Scala XML 的最简单方法?【英文标题】:Simplest way to add DOCTYPE to Scala XML? 【发布时间】:2011-07-26 08:27:30 【问题描述】:

如何在 Scala XML 中制作这个最小的 html5: <!DOCTYPE html><title></title><p></p></html>?

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

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

但是,如何在html 标签中注入DOCTYPE 属性?

我尝试了两条路线: 使用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>

这是接近的,但不是一个前缀属性和一个顽皮的分配。

【问题讨论】:

【参考方案1】:

您可以使用 XML 的 write 方法,该方法采用 java.io.Writer 而不是 File。使用 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

【讨论】:

希望采用一种较少涉及的方式,但四行代码对于正在做的事情来说并不多。【参考方案2】:

您不能将 doctype 标签添加到 scala xml 结构中,但您可以在将其转换为字符串时将其注入。

【讨论】:

以上是关于将 DOCTYPE 添加到 Scala XML 的最简单方法?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Scala 项目转换为使用 pom.xml 文件? [复制]

scala maven插件没有将scala文件打包成jar

Spark Scala 将数据保存到Mysql

xml DOCTYPE说明

xml DOCTYPE说明

在scala中为xml字符串添加元素。