相关疑难解决方法(0)

scala.xml.RuleTransformer的复杂性是否真的呈指数级?

这是一个后续行动,一个我以前的职位.

我试图理解为什么RuleTransformer的性能如此差.现在我认为它很慢,因为它的复杂性是O(2 n),其中n是输入XML树的高度.

假设我需要将所有元素的所有标签重命名为"b":

import scala.xml._, scala.xml.transform._

val rule: RewriteRule = new RewriteRule() {
  override def transform(node: Node): Seq[Node] = node match {
    case e: Elem => e.copy(label = "b")
    case other => other
  }
}

def trans(node: Node): Node = new RuleTransformer(rule).apply(node)
Run Code Online (Sandbox Code Playgroud)

让我们计算transform每个节点在输入中的访问次数<a3><a2><a1/></a2></a3>.
为了计算访问次数,我们添加一个缓冲区visited,在开始时初始化它,存储访问过的节点,最后打印它们.

import scala.collection.mutable.ListBuffer

// buffer to store visited nodes
var visited: ListBuffer[Node] = ListBuffer[Node]()

val rule: RewriteRule = new RewriteRule() {
  override def transform(n: Node): …
Run Code Online (Sandbox Code Playgroud)

xml scala time-complexity

5
推荐指数
1
解决办法
245
查看次数

标签 统计

scala ×1

time-complexity ×1

xml ×1