Scala – 从xml中完全删除命名空间

前端之家收集整理的这篇文章主要介绍了Scala – 从xml中完全删除命名空间前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一些xml:

<item name="ed" test="true"
  xmlns="http://www.somenamespace.com"
  xmlns:xsi="http://www.somenamespace.com/XMLSchema-instance">
  <blah>
     <node>value</node>
  </blah>
</item>

我想通过这个xml并完全删除所有命名空间,无论它们在哪里.我如何使用Scala执行此操作?

<item name="ed" test="true">
  <blah>
     <node>value</node>
  </blah>
</item>

我一直在看RuleTransform和复制属性等,但我可以删除命名空间或删除属性但不删除命名空间并保留属性.

解决方法

标签是Elem对象,命名空间由范围值控制.所以要摆脱它你可以使用:

xmlElem.copy(scope = TopScope)

但是,这是一个不可变的递归结构,因此您需要以递归方式执行此操作:

import scala.xml._

def clearScope(x: Node):Node = x match {
  case e:Elem => e.copy(scope=TopScope,child = e.child.map(clearScope))
  case o => o
}

函数将复制XML树,删除所有节点上的作用域.您可能还必须从属性删除范围.

猜你在找的Scala相关文章