2012-06-25 21 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更好的支持。