如何避免进入具有None类型的xml节点的属性:
我尝试了以下代码,但它不起作用:
li:first-child {
border-right: solid 0.188em #da291c;
padding: 0 2em 0 0;
}
li:first-child + li {
padding: 0 0 0 2em;
}
li:first-child + li + li {
padding: 0 2em 0 0;
border-right: solid 0.188em #da291c;
margin-left: 21%;
}
li:first-child + li + li + li {
padding: 0 0 0 2em;
}
预期输出为:
scala> val checked:Option[String] = None
checked: Option[String] = None
scala> val xml = <input checked={checked} />
<console>:11: error: overloaded method constructor UnprefixedAttribute with alternatives:
(key: String,value: Option[Seq[scala.xml.Node]],next: scala.xml.MetaData)scala.xml.UnprefixedAttribute <and>
(key: String,value: String,next: scala.xml.MetaData)scala.xml.UnprefixedAttribute <and>
(key: String,value: Seq[scala.xml.Node],next1: scala.xml.MetaData)scala.xml.UnprefixedAttribute
cannot be applied to (String, Option[String], scala.xml.MetaData)
val xml = <input checked={checked} />
如果选中的类型是xml.Text,那么它的工作原理。所以我基本上想要有条件地插入属性,如果值是Some(type)然后包含属性,如果它的None然后忽略,那么除了Xml.Text之外的属性类型怎么可能?
答案 0 :(得分:1)
Option[String]
的{{1}}类型不正确,您应该使用Option[scala.xml.Text]
。例如,如果您有Option[String]
,则可以map
:
val xml = <input checked={checked.map(scala.xml.Text.apply)}/>
。
或者您可以使用
val xml = <input checked={checked.orNull}/>
但我觉得与null
合作有点难看。
答案 1 :(得分:0)
<input checked = {checked.getOrElse(null)} />
>> xml: scala.xml.Elem = <input/>
将属性设置为null与没有属性相同。