![]() |
1
30
我们从这个开始:
方法
现在,这不会改变任何事情,因为Scala中的XML是不可变的。它将生成一个新节点,并进行必要的更改。唯一的成本是创建一个新的
但是,如果要将子节点添加到XML层次结构中较低的节点,事情会变得复杂。一种方法是使用拉链,如中所述 this blog .
但是,您可以使用
然后,像这样使用它:
如果仅仅是父元素还不够,那么可以使获取正确元素的过程更加复杂。但是,如果您需要使用特定索引的通用名称将子项添加到父项,那么您可能需要使用zippers。
例如,如果你有
|
![]() |
2
9
在Scala中,xml节点是不可变的,但可以做到这一点:
它重写了一个新的xml,方法是复制旧的xml并将节点作为子节点添加。
要将子节点添加到2.8中的任意节点,可以执行以下操作:
这将返回添加了子节点的父节点的新副本。假设在子节点可用时已堆叠它们:
一旦确定检索完子项,就可以调用父项在堆栈中添加所有子项,如下所示:
|
![]() |
3
6
自从scala 2.10.0以来,Elem的实例构造函数发生了变化,如果您想使用@Daniel C编写的朴素解决方案。Sobral,应该是:
|
![]() |
4
3
自从
|
![]() |
5
2
在通常的Scala方式中,所有节点、元素等实例都是不可变的。
看见 http://sites.google.com/site/burakemir/scalaxbook.docbk.html 了解更多信息。 |
![]() |
6
2
当您需要XML时,不管您想如何保持您的小节状态,将其全部打包在一起。
或
|
![]() |
7
1
Scales Xml 允许通过折叠XPath进行简单的就地更改,将子节点添加到特定子节点正好适合这种方法。 看见 In-Place Transformations 更多细节。 |
![]() |
8
1
我通过以下方式实现我的“appendChild”方法:
该方法以递归方式将子节点附加到节点。在“if”语句中,它只调用Elem类的“copy”方法来生成受影响子类的新实例(可能是复数)。然后在“else”语句中递归调用“appendChild”方法,验证结果XML是否将重建。在“if-else”之前,有一个由未受影响的孩子构建的序列。
|
![]() |
9
1
您的根定义实际上是一个Elem对象,一个node的子类,因此如果您删除不必要的节点类型(这隐藏了它的实现),您实际上可以对它执行一个+,因为Elem类有这个方法。
scala ev:
因为每个元素和每个节点都是一个NodeSeq,所以即使追加的是未知序列,也可以非常有效地添加这些元素和节点:
|
![]() |
Wickoo · Scala变量解析:类与局部变量 4 月前 |
![]() |
Jake · 如何回滚臭鼬事务以进行集成测试?(缺少隐式原点) 6 月前 |
![]() |
Readren · 如何定义标量。标量3中元组的ValueOf? 1 年前 |
![]() |
Leif Andersen · “=>”在scala泛型中是什么意思? 1 年前 |