[UPDATED] はちょうどあなたがテキストではなく、XML関連の構文ブレースについての括弧について尋ねてきたことに気づきました。 可能答えは:
scala> val xml = <a>
<prop>{{key1}}</prop>
<prop>{{key2}}</prop>
<prop>notkey</prop>
</a>
xml: scala.xml.Elem = <a><prop>{key1}</prop><prop>{key2}</prop><prop>notkey</prop></a>
Scalaは代用品として{
変数}
を扱うので、私は、中括弧をエスケープする{
と}
を倍増しました:
scala> val text="all your base are belong to us"
text: java.lang.String = all your base are belong to us
scala> val template = <a>{text}</a>
template: scala.xml.Elem = <a>all your base are belong to us</a>
今すぐ仕事に戻ります。指定された名前のサブノードを要するのみprop's
使用\
射影演算子を取る
。 xmlツリー内のすべてのsub-sub -...-サブノードを取るには、代わりに\\
を使用します。
scala> val props = xml\"prop"
props: scala.xml.NodeSeq = NodeSeq(<prop>{key1}</prop>, <prop>{key2}</prop>, <prop>notkey</prop>)
val keys = props.filter (p => p.text.startsWith("{"))
res3: scala.xml.NodeSeq = NodeSeq(<prop>{key1}</prop>, <prop>{key2}</prop>)
実は、私はここに騙され、非所望の特性フィールドは notkey形{には存在しないことを想定しています。
scala> for(k <- keys) {
| println(k.label+":"+k.text)
| }
prop:{key1}
prop:{key2}
実際の入力例と追加するキー/値はありますか?現在受け入れられている答えよりも優れた解決策があるかもしれません。 –