2012-06-25 20 views
2

假設我有一個反XML對象,如:構建XML文本防含有XML對象

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

我想構建一個包含child作爲一個孩子的XML對象:

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

顯而易見的方法是

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

問題是,Scala的XML文字不能識別反XML的對象,所以child被轉換爲字符串,並嵌入parent作爲文本節點:

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

我怎樣才能解決這個問題?

回答

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更好的支持。