Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
scala XML属性的空检查_Scala - Fatal编程技术网

scala 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

如何避免属性进入无类型的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 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,则无法工作