happening in this SO question과 비슷한 스칼라의 XML에서 객체를 빌드하는 더 나은 방법을 찾고 있습니다. 누락 된 요소가 포함될 수있는 xml을 읽으 려합니다. XML을 읽을 때, 나는 다음과 같은 기능에 노드를 전달하고있어스칼라 : 선택적 XML 요소 및 사례 클래스 처리
case class Content(name:String, description:String, someDouble: Double)
: 현재 나는 경우 클래스를 사용하고
def buildContent(node: Node) = {
Content((node \ "name").text,
(node \ "description").text,
(node \ "someDouble")
}
내 문제는 "someDouble"수도 있고 할 수있다 현재 XML 스 니펫에 존재하지 않아야하는데, 이것이 문자열이라면 좋겠지 만 이중으로 처리해야합니다. 현재 암시 적 변환을 사용하여이 문제를 처리하고 있습니다.
implicit def NodeSeqToDouble(value: NodeSeq) = {
value.text match {
case "" => 0.0
case s:String => s.toDouble
}
}
다음과 같이 작동하지만 다소 복잡합니다. 형식 변환이 선택적 xml 요소에 관련되어있을 때 선택적 요소를 다루는 "최상의 방법"이 있는지 궁금합니다.
흥미 롭다. 나는 그 접근법을 좋아한다. 그 값을 처리해야하는 경우 패턴 일치를 활용할 수 있습니다. 하나의 후속 질문 : 사례 클래스는 DTO에 가장 적합한 옵션이며, 그렇다면 선택적 (nullable) 값을 지정하는 다른 방법이 있습니까? 아니면 Option [Type]이 가장 적합합니까? – mhamrah
@mhamrah 사례 클래스는 DTO에 대한 합리적인 접근법으로 보입니다. 선택적 (nullable) 값에 관해서는 AFAIK'Option [Type]'은 그것들에 대한 스칼라 표준 접근법이다. (참조 : http://www.scala-lang.org/api/current/index.html#scala.Option) –