如何防止 Scala 的漂亮打印机删除 CDATA?

How to prevent Scala's pretty printer from removing CDATA?

我使用 Scala xml PrettyPrinter 库来格式化 xml 文件。它删除具有 CDATA 部分的标签内容。如何防止 PrettyPrinter 删除 CDATA?

这是代码:

val printer = new scala.xml.PrettyPrinter(80, 2)
printer.format(XML.loadString(input))

它将<textFieldExpression><![CDATA[something]]></textFieldExpression>转换为<textFieldExpression>something</textFieldExpression>

我认为删除 CDATA 的不是 PrettyPrinter,而是 XML.loadString(...)。如果您尝试创建这样的 XML 并打印它:

val input = <textFieldExpression>{new xml.PCData("something")}</textFieldExpression>
val printer = new scala.xml.PrettyPrinter(80, 2)
printer.format(XML.loadString(input.toString))
// => <textFieldExpression>something</textFieldExpression>
printer.format(input)
// => <textFieldExpression><![CDATA[something]]></textFieldExpression>