2012-06-25 2 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> 

을 확실한 방법은 문제는 스칼라의 XML 리터럴 안티 XML을 인식하지 않는다는 것입니다

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

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

가 어떻게이 문제를 해결 할 수의 개체가, 그래서 child는 텍스트 노드로 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 지원 내장 사용하여 더 잘 할 거라고 생각해.