我有一个XML字符串,其中一些节点在标签之间有文本,如下所示:
<note>
<to>Text between tags</to>
<from>More text</from>
<empty />
</note>
在Scala中,如何删除这些标记之间的文本,以便得到这样的字符串?:
<note><to></to><from></from><empty /></note>
答案 0 :(得分:2)
您可以使用RewriteRule
并将文本节点设置为空,例如
val removeText = new RewriteRule {
override def transform(n: Node): NodeSeq = n match {
case e: Text => NodeSeq.Empty
case _ => n
}
}
然后,您可以使用RuleTransformer
转换您的XML,例如
val source = scala.io.Source.fromFile("myData.xml")
val lines = try source.mkString finally source.close()
val xml = XML.loadString(lines)
val output = new RuleTransformer(removeText).transform(xml)
println(output)
输出:
<note><to/><from/><empty/></note>