У меня проблема, похожая на Scala - modifying nested elements in xml Я воспроизвел тот же код в этом посте. Я пытаюсь изменить содержимое в элементе, и мне нужно вызвать функцию для получения содержимого. Напр.Изменение содержимого xml scala
object test extends App {
val InputXml: Node =
<root>
<contents>
<version>1</version>
</contents>
</root>
object t1 extends RewriteRule {
override def transform(n: Node): Seq[Node] = {
println("transforming '" + n + "'")
n match {
case Elem(prefix, "version", attribs, scope, _*) =>
Elem(prefix, "version", attribs, scope, true, Text(computeVersion()))
case other => other
}
}
def computeVersion() = {
println("computeVersion called")
"3.0"
}
}
object rt1 extends RuleTransformer(t1)
val res = rt1(InputXml)
val pp = new PrettyPrinter(width = 2, step = 1)
Console println (pp format res)
}
Выход:
transforming ' '
transforming '1'
transforming '<version>1</version>'
computeVersion called
transforming '<version>1</version>'
computeVersion called
transforming '1'
transforming '<version>1</version>'
computeVersion called
transforming '<version>1</version>'
computeVersion called
transforming '<contents> <version>3.0</version></contents>'
transforming ' '
transforming '1'
transforming '<version>1</version>'
computeVersion called
transforming '<version>1</version>'
computeVersion called
transforming '1'
transforming '<version>1</version>'
computeVersion called
transforming '<version>1</version>'
computeVersion called
transforming '<contents> <version>3.0</version></contents>'
transforming '<root><contents> <version>3.0</version></contents></root>'
<root><contents> <version>3.0</version></contents></root>
computeVersion() становится называется почти каждый раз, когда из-за сложности. Я бы просто хотел, чтобы это вызывалось, когда обрабатывается фактический тег. Я попытался окружить его шаблонами соответствия, например, поиск <version>
, который действительно не работает.
Любые предложения?
Не могли бы вы дать немного больше деталей и, возможно, объяснить, какую ошибку вы получаете. – wwkudu
У меня есть вопрос. – user3044440
Я посмотрел и нашел это довольно запутанным. Что-то связано с тем, как RewriteRule и преобразовать работу, но еще не успел ее разгадать. Надеюсь, кто-то более знающий весит. – wwkudu