在scala repl中:

val input = <outerTag xmlns="http://xyz"> <innerTag> </innerTag> </outerTag>

input\\@"innerTag"

= >
<innerTag xmlns="http://xyz"> </innerTag>

我该怎么阻止斯卡拉这么做?为什么它不能给我<innerTag> </innerTag>?如何阻止这种情况发生(或者简单地删除xmlns属性)?
谢谢!

澄清:
我的总体任务是切碎一个XML文件并重新组合它。因此,这个节点将从根节点(具有xmlns属性)的下面获取,然后集成回根节点(再次具有xmlns属性)下的文档中。

最佳答案

在输入文档中,<innerTag>具有逻辑名称空间"http://xyz",因为其父元素<outerTag>具有该名称空间。这就是XML名称空间的工作方式。
当您单独请求<innerTag>元素时,scala会从父<outerTag>复制名称空间声明,因为名称空间是<innerTag>的逻辑部分,即使在初始文档中没有显式声明。
如果要删除命名空间,则必须执行一些额外的处理。

07-26 09:30