Метод Elem (префикс, метка, атрибуты, область, дочерний) устарел в Scala 2.10, а Elem (префикс, метка, атрибуты, scope, minimEmpty, child) должен использоваться. Однако, по крайней мере, на пустых элементах новый метод apply имеет другое поведение. Устаревшие версии работает таким образом:XML в Scala - метод Elem с minimEmpty Boolean
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"/>)
Но при использовании нового метода Элем, согласование не работает:
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.
Спасибо,