0

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() 行の下に移動すると、正常に出力されます

4

1 に答える 1