scala XML属性的空检查
如何避免属性进入无类型的xml节点: 我尝试了以下代码,但不起作用:scala XML属性的空检查,scala,Scala,如何避免属性进入无类型的xml节点: 我尝试了以下代码,但不起作用: scala> val checked:Option[String] = None checked: Option[String] = None scala> val xml = <input checked={checked} /> <console>:11: error: overloaded method constructor UnprefixedAttribute with alt
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} />
scala>val选中:选项[String]=None
选中:选项[字符串]=无
scala>val xml=
:11:错误:重载的方法构造函数UnfixedAttribute带有替代项:
(key:String,value:Option[Seq[scala.xml.Node]],next:scala.xml.MetaData)scala.xml.unfixedattribute
(key:String,value:String,next:scala.xml.MetaData)scala.xml.unfixedattribute
(key:String,value:Seq[scala.xml.Node],next1:scala.xml.MetaData)scala.xml.unfixedattribute
无法应用于(字符串,选项[String],scala.xml.MetaData)
val xml=
预期产出如下:
xml: scala.xml.Elem = <input/>
xml:scala.xml.Elem=
如果选中的类型是xml.Text,则它可以工作。所以基本上我想有条件地插入属性,如果值是某个(类型),那么就包含属性,如果没有,那么就忽略它,除了Xml.Text之外的属性类型怎么可能呢?
<input checked = {checked.getOrElse(null)} />
>> xml: scala.xml.Elem = <input/>
>>xml:scala.xml.Elem=
将属性设置为null与没有该属性相同。选项[String]的类型不正确。您应该改用
选项[scala.xml.Text]
。例如,如果您有选项[String]
您可以映射它:
val xml=
或者你可以使用
val xml=
但是我认为使用null
有点难看,在某些情况下它是可以的。这是其中之一。XML解析器将null正确解释为表示不应包含在XML中的属性。此scala.XML.Text.apply是否适用于所有数据类型,包括Integers/BigDecimal/DateTime?我在对字符串类型使用映射时遇到此错误:类型不匹配:预期(char)=>notinferedb实际:(String)=>text如果我理解正确,我们讨论的是选项[String]
而不仅仅是String
。关于另一种类型,例如Int
,您可以使用scala.xml.Atom
映射它。对于实例valxml=
。还有一点,这也适用于选项[String]
。如何对整个标记执行此操作?示例:如果值为None,如何忽略完整的用户标记?我正在尝试,但如果(john.get(“姓氏”)!=None,则无法工作