scala.xml.PrettyPrinter在没有文本的情况下格式化较短的节点
发布时间:2020-12-16 09:05:16 所属栏目:安全 来源:网络整理
导读:我使用 scala.xml.PrettyPrinter在 Scala中格式化我的XML.问题在于没有文本内容的节点.而不是这个: node/node 我更喜欢这个: node / 我怎样才能让PrettyPrinter按照我的方式进行格式化? 解决方法 这是scala-xml中的一个错误,但是它在2018年2月20日的版本1
我使用
scala.xml.PrettyPrinter在
Scala中格式化我的XML.问题在于没有文本内容的节点.而不是这个:
<node></node> 我更喜欢这个: <node /> 我怎样才能让PrettyPrinter按照我的方式进行格式化? 解决方法
这是scala-xml中的一个错误,但是它在2018年2月20日的版本1.1.0中修复了. PrettyPrinter中添加了一个新选项minimizeEmpty.
要使用1.1.0,请将以下内容添加到build.sbt: libraryDependencies ++= Seq( "org.scala-lang.modules" %% "scala-xml" % "1.1.0" ) 以下是如何在PrettyPrinter中使用新选项的示例: val pp = new xml.PrettyPrinter(80,2,minimizeEmpty = true) val x = <node><leaf></leaf></node> println(pp.format(x)) 这将输出: <node> <leaf/> </node> 如果Scala编译器抱怨: java.lang.NoSuchMethodError: scala.xml.PrettyPrinter.<init>(IIZ)V 那么你需要在sbt中启用一个分叉的JVM,以便Scala使用新版本的scala-xml.只需将以下内容添加到build.sbt: fork := true 在scala-xml 1.1.0之前,创建< node />,leafTag()的方法在类中,但未使用.您可以像这样修复它: import xml._ val p2 = new PrettyPrinter(120,2) { override protected def traverse(node:Node,pscope:NamespaceBinding,ind:Int) = node match { case n:Elem if n.child.size == 0 => makeBox(ind,leafTag(n)) case _ => super.traverse(node,pscope,ind) } } 如果你可以升级到1.1.0,没有理由使用override-hack. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- twitter-bootstrap – 添加工具提示以选择Bootstrap 3中的元
- 配合angularjs中interceptor一劳永逸的加载$ionicloading的
- Liferay Portal额外研究(二):对Liferay进行瘦身
- WebService笔记之定制发布(wsdd)(Axis1.4)
- 将变量从Bash传递给psql
- 手把手教你SOAP访问webservice并DOM解析返回的XML数据
- twitter-bootstrap – 如何针对不同的显示大小更改行中的列
- 重做日志:分析日志容量及切换频率
- WebService CXF学习(入门篇2):HelloWorld示例
- Scala或Java中的轻量级HTTP服务器[已关闭]