我有一些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>
Run Code Online (Sandbox Code Playgroud)
我想通过这个xml并完全删除所有命名空间,无论它们在哪里.我如何使用Scala执行此操作?
<item name="ed" test="true">
<blah>
<node>value</node>
</blah>
</item>
Run Code Online (Sandbox Code Playgroud)
我一直在看RuleTransform和复制属性等,但我可以删除命名空间或删除属性但不删除命名空间并保留属性.
标签是Elem对象,命名空间由scope值控制.所以要摆脱它你可以使用:
xmlElem.copy(scope = TopScope)
Run Code Online (Sandbox Code Playgroud)
但是,这是一个不可变的递归结构,因此您需要以递归方式执行此操作:
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
}
Run Code Online (Sandbox Code Playgroud)
此函数将复制XML树,删除所有节点上的作用域.您可能还必须从属性中删除范围.
| 归档时间: |
|
| 查看次数: |
1569 次 |
| 最近记录: |