2016-07-19 6 views
1

私はいくつかのノードは、タグの間のテキストを持つXML文字列を持っているので、同様に:私はこのような文字列を取得するようにScalaでScalaのXML文字列からテキストを取り除く方法は?

<note> 
<to>Text between tags</to> 
<from>More text</from> 
<empty /> 
</note> 

、どのように私はこれらのタグの間のテキストを削除することができ

を?:
<note><to></to><from></from><empty /></note> 

答えて

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>

関連する問題