6

XML ドキュメントが Anti-XML として保存されているとしますElem

val root : Elem =
    <foo attr="val">
        <bar/>
    </foo>

. <baz>blahblahblah</baz>子としてルート要素に追加したい

val modified_root : Elem =
    <foo attr="val">
        <bar/>
        <baz>blahblahblah</baz>
    </foo>

比較のために、Python ではroot.append(foo).

Group[Node]usingに(兄弟として)追加できることは知っています:+が、それは私が望むものではありません:

<foo attr="val">
    <bar/>
</foo>
<baz>blahblahblah</baz>

の最後の子として追加するにはどうすればよい<foo>ですか? ドキュメントを見ると、明らかな方法がわかりません。


Scala XML Building: Adding children to existing Nodesに似ていますが、この質問は ではなく Anti-XML に関するものですscala.xml

4

2 に答える 2

9

Elemケースクラスなので、次を使用できますcopy

import com.codecommit.antixml._

val root: Elem = <foo attr="val"><bar/></foo>.convert
val child: Elem = <baz>blahblahblah</baz>.convert

val modified: Elem = root.copy(children = root.children :+ child)

このcopyメソッドはケース クラスに対して自動的に生成され、元のインスタンスの個々のフィールドを変更できる名前付き引数を取ります。

于 2012-06-25T13:08:38.403 に答える
3

まだ関連性はありませんが、Anti-XML リポジトリにメソッドaddChild/renがあります。その実装には現在バグが含まれていますが、それを修正するための未解決のプル リクエストがあります。したがって、おそらく将来のリリースでそれを使用する必要があります。Elemmaster

(これをコメントにしたかったのですが、まだ許可されていません。)

于 2012-06-25T16:31:54.403 に答える