scala.xml.PrettyPrinter 在其中没有文本时格式化较短的节点
我使用 scala.xml.PrettyPrinter 在 Scala 中格式化 XML。问题在于没有文本内容的节点。而不是这个:
<node></node>
我更喜欢这个:
<node />
如何让 PrettyPrinter 按照我的方式格式化?
I use scala.xml.PrettyPrinter to format my XML in Scala. The problem is with nodes without text content. Instead of this:
<node></node>
I'd prefer to have this:
<node />
How can I make PrettyPrinter to format it my way?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这是 scala-xml 中的一个错误,但已在 2018 年 2 月 20 日的版本 1.1.0 中修复。
PrettyPrinter
中添加了一个新选项minimizeEmpty
。要使用 1.1.0,请将以下内容添加到您的
build.sbt
中:以下是如何使用
PrettyPrinter
中的新选项的示例:这将输出:
如果Scala 编译器抱怨:
那么您需要在 sbt 中启用分叉 JVM,以便 Scala 使用新版本的 scala-xml。只需将以下内容添加到您的
build.sbt
中:在 scala-xml 1.1.0 之前,创建
的方法、leafTag()
,在类中,但未使用。您可以像这样修复它:如果您可以升级到 1.1.0,则没有理由使用 override-hack。
This was a bug in scala-xml, but it was fixed in version 1.1.0 on Feb-20-2018. A new option
minimizeEmpty
was added toPrettyPrinter
.To use 1.1.0, add the following to your
build.sbt
:Here's an example of how to make use of the new option in
PrettyPrinter
:This will output:
If the Scala compiler, complains:
then you need to enable a forked JVM in sbt, so that Scala is using the new version of scala-xml. Just add the follow to your
build.sbt
:Previous to scala-xml 1.1.0, the method to create
<node/>
,leafTag()
, is in the class, but unused. You can fix it like so:There's no reason to use the override-hack if you can just upgrade to 1.1.0.