如何在Scala XML中访问父元素

jel*_*irt 14 xml scala

scala.xml包表示带有标记树节点的XML.但是这个树在Scala 2.7中是单向的,因为似乎无法访问Elem给定的父级Elem吗?同样似乎适用于父母Document.例如,在XOM中,您拥有getParentgetDocument访问者可以导航到树的根目录.可以使用Scala的XML API完成吗?

Dan*_*ral 14

正如其他人所提到的,没有父链接可以使它们成为高效的不可变结构.例如:

scala> val a = <parent><children>me</children></parent>
a: scala.xml.Elem = <parent><children>me</children></parent>

scala> val b = a.child(0)
b: scala.xml.Node = <children>me</children>

scala> val c = <newparent>{b}</newparent>
c: scala.xml.Elem = <newparent><children>me</children></newparent>

scala> a
res0: scala.xml.Elem = <parent><children>me</children></parent>

scala> b
res1: scala.xml.Node = <children>me</children>

scala> c
res3: scala.xml.Elem = <newparent><children>me</children></newparent>
Run Code Online (Sandbox Code Playgroud)

没有复制数据结构.该节点指向的b是既指出了同样的节点ac.如果它必须指向父级,那么当你使用它时,你必须复制它c.

要以您希望的方式在该数据结构中导航,您需要所谓的纯粹应用XML游标.