scala.xml
包表示带有标记树节点的 XML。但是在 Scala 2.7 中这棵树是单向的吗,因为似乎没有办法访问给定 Elem
的 Elem
父级?这同样适用于父 Document
。例如,在 XOM 中,您有 getParent
和 getDocument
访问器来导航到树的根。这可以用 Scala 的 XML API 完成吗?
最佳答案
正如其他人所提到的,没有父链接可以使它们成为高效的不可变结构。例如:
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>
没有复制数据结构。 b
指向的节点与 a
和 c
指向的节点完全相同。如果它必须指向父级,那么在 c
中使用它时就必须复制它。
要以您想要的方式在该数据结构中导航,您需要所谓的纯应用 XML 游标。
关于xml - 如何访问 Scala XML 中的父元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1582244/