2

アンチXMLオブジェクトがあるとします。例:

import com.codecommit.antixml._
val child = <child attr="val">...</child>.convert

子として含むXMLオブジェクトを作成したいchild

<parent foo="bar"><foo/><child attr="val">...</child><foo/></parent>

明白な方法は

val parent : Elem = <parent foo="bar"><foo/>{ child }<foo/></parent>.convert

問題は、ScalaのXMLリテラルがAnti-XMLのオブジェクトを認識しないため、文字列に変換され、テキストノードとしてchild埋め込まれることです。parent

<parent foo="bar"><foo/>&lt;child attr="val"&gt;...&lt;/child&gt;<foo/></parent>

この問題を回避するにはどうすればよいですか?

4

1 に答える 1

3

XML.loadStringトリックを行う必要があります:

val child: com.codecommit.antixml.Elem = <child />.convert
val parent: scala.xml.Elem = <parent>{scala.xml.XML.loadString(child.toString)}</parent>

Zipper深い操作のより複雑なシナリオでは、リテラルの使用を避け、組み込みのサポートを使用する方がよいと思います。

于 2012-06-25T22:22:35.230 に答える