我正在解析一个 xml 文件,该文件可能有也可能没有一个名为的元素<Popular>
,该元素位于元素内<EName>
例子:
<Info>
<Enterprise>
<EName>
<Legal>Cool company</Legal>
</EName>
</Enterprise>
<Enterprise>
<EName>
<Legal>Cool company2</Legal>
<Popular>The company 2</Popular>
</EName>
</Enterprise>
</Info>
我像这样使用scala scales xml:
val Info = NoNamespaceQName("Info")
val Enterprise = NoNamespaceQName("Enterprise")
val EName = NoNamespaceQName("EName")
val Legal = NoNamespaceQName("Legal")
val Popular = NoNamespaceQName("Popular")
val EnterprisePath = List(Info, Enterprise)
val itr = iterate(EnterprisePath, xml)
for {
enterprise <- itr
enterpriseName <- enterprise \* EName \* Legal
enterprisePopularName <- enterprise \* EName \* Popular
} {
// Do fun stuff
Logger.info("enterprise: "+enterpriseName + " "+enterprisePopularName)
}
发生的情况是,当 Popular 元素不存在时,for 语句没有执行,yield 语句也没有执行。
我想要的是首先检查元素,如果流行元素为空,请将 enterprisePopularName 设置为空字符串
就像是:
<- if((enterprise \* EName \* Popular)) enterprise \* EName \* Popular else ""
但我无法弄清楚。我想这是因为我是一个 scala 新手。