1
我正在寻找一种更好的方式来构建Scala中的XML对象,类似于happening in this SO question。我想阅读可能包含缺少元素的XML。目前,我使用的情况下类:Scala:处理可选的XML元素和案例类
case class Content(name:String, description:String, someDouble: Double)
当读取XML,我传递一个节点以下功能:
def buildContent(node: Node) = {
Content((node \ "name").text,
(node \ "description").text,
(node \ "someDouble")
}
我的问题是,“someDouble”可能会或可能不会出现在当前的XML代码片段中,如果这是一个字符串,那很好,但我需要将它视为一个double。目前我正在处理这与隐式转换
implicit def NodeSeqToDouble(value: NodeSeq) = {
value.text match {
case "" => 0.0
case s:String => s.toDouble
}
}
哪些工作,但似乎冗长,有点难看。我想知道在可选的xml元素中包含类型转换时是否存在处理可选元素的“最佳实践”方式。
有趣的是,我喜欢那种方法。如果您需要处理该值,则可以利用模式匹配。一个后续问题:DTO的案例类是最佳选择,如果是,是否有另一种方法来指定可选(可空)值,或者是Option [Type]最合适? – mhamrah
@mhamrah案例类似于DTO的合理方法。至于可选(可为空)的值,AFAIK'Option [Type]'是scalas对它们的标准方法。 (请参阅:http://www.scala-lang.org/api/current/index.html#scala.Option) –