Scala XML Elem没有显示

问题描述

我有一个我想在xml中添加条件Elem的类,但是我无法做到这一点。请帮忙。 ShortName块应该是有条件的。 在调试时,我看到get shortname被执行。实际上,如果我尝试将其包装在虚拟标签(<dummy>{getShortName().get}</dummy>中),一切都会正常。但是我需要外面的条件。 这是我的课:

import scala.xml.Elem

class MyClass(rob: ROB,scalaDTO: ScalaDTO,robStatus: Status) {

  val myRob =
    <FeatureNames>
      {val allPoiNames = rob.Identity.Names.get.ROB_Name
    allPoiNames.map(robName => {
      if (!robName.Type.contains("Shortened")) {

        <FeatureName CaseAutoCorrectionEnabled="true">
          {robName.Text.map(text => {
          val transType = text.Trans_Type
          transType match {
            case None => {
              {
                <Name>
                  {text.value}
                </Name>

                {
                  //Executes but does not get added
                  getShortName().getOrElse(null)
                }

                <Language>
                  {robName.Language_Code}
                </Language>
              }
            }
            case _ => {
              <OtherName>
                {text.value}
              </OtherName>
            }
          }

        })}
        </FeatureName>
      }
    })}
    </FeatureNames>

  private def getShortName(): Option[Elem] = {
    val condition = true
    if (condition) {
      Some(
       <ShortName>ShortName</ShortName> 
      )
    } else {
      None
    }

  }

  override def toString: String = {
    val prettyPrinter = new scala.xml.PrettyPrinter(150,2)
    prettyPrinter.format(scala.xml.Utility.trim(myRob))
  }
}

我的输出如下:

<FeatureNames>
  <FeatureName CaseAutoCorrectionEnabled="true">
    <Language>ENF</Language>
    <OtherName>The Name</OtherName>
  </FeatureName>
</FeatureNames> 

请注意缺少名称标记,将其移动到getShortName()行下方即可正常打印

解决方法

对于这种逻辑,您可以将其表示为NodeSeq而不是将其与xml文字混合。

类似的东西:

        case None =>
          NodeSeq.fromSeq(Seq(<Name>{text.value}</Name>,getShortName().orNull,<Language>{robName.Language_Code}</Language>))

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...