1

Elem(prefix, label, attribs, scope, child) メソッドは Scala 2.10 で非推奨となり、Elem(prefix, label, attribs, scope, MinimalEmpty, child) を使用する必要があります。ただし、少なくとも空の要素では、新しい apply メソッドの動作が異なります。廃止されたバージョンは次のように機能します。

val inputXML = <PC Price="100" CurrencyCode="USD"/>
val rule1 = new RewriteRule {
    override def transform(n: Node): Seq[Node] = n match {
        case Elem(prefix, "PC", attribs, scope, content @ _*)  => 
            Elem(prefix, "Mac", attribs, scope, content:_*)
        case other => other
    }
}

println(new RuleTransformer(rule1).transform(inputXML))

これは次を印刷します:

List(<Mac Price="100" CurrencyCode="USD"/>) 

しかし、新しい Elem メソッドを使用すると、マッチングが機能しません。

val inputXML = <PC Price="100" CurrencyCode="USD"/>
val rule1 = new RewriteRule {
    override def transform(n: Node): Seq[Node] = n match {
        case Elem(prefix, "PC", attribs, scope, minimizeEmpty, content @ _*)  => 
            Elem(prefix, "Mac", attribs, scope, true, content:_*)
        case other => other
    }       
}

println(new RuleTransformer(rule1).transform(inputXML))

上記のコードは次を返します。

<PC Price="100" CurrencyCode="USD"/>

これはバグですか、それとも何か間違っていますか? Scala 2.10.2 を使用しています。

ありがとう、

4

1 に答える 1