Scala – 从xml中完全删除命名空间
发布时间:2020-12-16 18:03:42 所属栏目:安全 来源:网络整理
导读:我有一些xml: item name="ed" test="true" xmlns="http://www.somenamespace.com" xmlns:xsi="http://www.somenamespace.com/XMLSchema-instance" blah nodevalue/node /blah/item 我想通过这个xml并完全删除所有命名空间,无论它们在哪里.我如何使用Scala执
我有一些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树,删除所有节点上的作用域.您可能还必须从属性中删除范围. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |