【问题标题】:Scala Xml auto transient when value is null值为空时的Scala Xml自动瞬态
【发布时间】:2012-01-11 08:13:49
【问题描述】:

我知道用 pojo 生成 xml 我可以做这样的事情,

    class Person(name : String, age : Int){
        def toXml() = <person><name>{ name }</name><age>{ age }</age></person>;
    }

问题是如果name = null,我就会有

    <person><name></name><age>8</age></person>

真的,当值为空时,我希望节点是瞬态的

    <person><age>8</age></person>

有没有一种干净的方法来完成这个?谢谢。

【问题讨论】:

    标签: xml scala pojo transient


    【解决方案1】:

    以下代码适用于我。

    <person>{if(name != "")  <name>{name}</name>}</person>
    

    干杯

    【讨论】:

      【解决方案2】:

      如果 name 可以为 null,另一种(更实用?)方法是使用 Option:

      class Person(name : Option[String], age : Int){
        def toXml() = <person>{name map {x=> <name>{x}</name>} getOrElse(<name/>)} <age>{ age }</age></person>;
      }
      

      我很确定它可以不那么冗长,但优点是您指定该名称是可选的,然后类型检查器将强制处理它。 使用纯字符串,您需要自己记住 null 检查。

      【讨论】:

        猜你喜欢
        • 2016-08-25
        • 2011-02-04
        • 2015-01-22
        • 2017-04-25
        • 1970-01-01
        • 1970-01-01
        • 2011-12-23
        • 2010-10-08
        相关资源
        最近更新 更多