하나 개의 훌륭한 대안이 순수 자바 라이브러리 XStream을 사용하는 것입니다보십시오.
일부 조정할 수있는 케이스 클래스와 함께 작동합니다. 의 클래스 XStreamConversions을 사용하고 있으며 List, Tuple, Symbol, ListBuffer 및 ArrayBuffer에서도 작동합니다. 따라서 완벽하지는 않지만 특정 요구에 맞게 조정할 수는 있습니다.
다음은 작은 예입니다.
<?xml version="1.0" ?><foo><a>foo</a><b>1</b><bar class="list"><bar><a>bar1</a></bar><bar><a>bar2</a></bar></bar></foo>
Foo(foo,1,List(Bar(bar1), Bar(bar2)))
true
자바 1.6/스칼라 2.9 종속성이 xstream.jar 파일과 언급 XStreamConversions 클래스입니다
import com.thoughtworks.xstream.XStream
import com.thoughtworks.xstream.io.xml.StaxDriver
import net.mixedbits.tools.XStreamConversions
case class Bar(a:String)
case class Foo(a:String,b:Int,bar:Seq[Bar])
object XStreamDemo {
def main(args: Array[String]) {
val xstream = XStreamConversions(new XStream(new StaxDriver()))
xstream.alias("foo", classOf[Foo])
xstream.alias("bar", classOf[Bar])
val f0 = Foo("foo", 1, List(Bar("bar1"),Bar("bar2")))
val xml = xstream.toXML(f0)
println(xml)
val f1 = xstream.fromXML(xml)
println(f1)
println(f1 == f0)
}
}
이 다음과 같은 출력을 생성합니다.
Scalaxb는 scala 클래스에 xsd 파일을 포함합니다. 하지만 저는 스칼라 클래스를 가지고 있고 그것을 직렬화하고 싶습니다. –