0
일부 XML을 사례 클래스로 읽으려고하고 그 반대도 마찬가지입니다. 모든 것이 잘되지만 목록 속성 인 것 같습니다.Scala에서 JAXB를 사용하여 목록을 언/마샬링하는 방법은 무엇입니까?
Exception in thread "main" javax.xml.bind.UnmarshalException: Unable to create an instance of scala.collection.immutable.List
이 BTW, 모든 내 삶의 목적에 적합하지 않는 JAXB 수 있고, 내가 XML 처리를위한 기본 스칼라 방법을 사용한다 : 나는 예외에 대한 아무 생각이 없다? 하지만 제 목표 XSD는 매우 커서 고통스럽습니다.
는 의견에 발견되면서package common
import java.io.StringReader
import scala.annotation.target.field
import javax.xml.bind.annotation._
import javax.xml.bind.annotation.adapters._
import javax.xml.bind._
import common.Types.{xmlTypeAdapter, xmlElement}
@XmlRootElement(name = "person")
@XmlAccessorType(XmlAccessType.FIELD)
case class Person(
@xmlElement(required = true) fullname: String,
username: String,
age: Int,
favNumbers: List[Int]){
private def this() = this("", "", 0, List())
}
object JaxbTest {
val context = JAXBContext.newInstance(classOf[Person])
def main(args: Array[String]) {
val personXml1 = "<person><fullname>Martin Krasser</fullname><username>mrt1nz</username><age>30</age><favNumbers><favNumber>73</favNumber><favNumber>47</favNumber></favNumbers></person>"
assert(context.createUnmarshaller().unmarshal(new StringReader(personXml1)) ==
Person("Martin Krasser", "mrt1nz", 30, List(73,47)))
context.createMarshaller.marshal(Person("Martin Krasser", "mrt1nz", 30, List(73,47)), System.out)
}
}
package object Types {
type xmlElement = [email protected]
type xmlTypeAdapter = [email protected]
}
스택 추적을 제공 했습니까? 막히면 JAXB 용 Java 콜렉션을 사용하고 scala.collection.JavaConverters를 사용하여 랩핑하는 것을 고려하십시오. –
확실히 Java 컬렉션을 사용해야합니다 – sourcedelica
여러분, 고맙습니다. 자바의 ArrayList를 불변의 스칼라 목록 대신 사용하려고합니다. – vicont