如何在scala XML解析中处理nil?
我有一个XML文档,表示我需要解析并保存在db中的模型。在某些字段中,它可能具有由xsi:nil指示的空值。像这样如何在scala XML解析中处理nil?,scala,scala-xml,xml-nil,Scala,Scala Xml,Xml Nil,我有一个XML文档,表示我需要解析并保存在db中的模型。在某些字段中,它可能具有由xsi:nil指示的空值。像这样 <quantity xsi:nil="true"/> 对于解析,我使用scala.xml DSL。问题是我找不到任何方法来确定某物是否为零。这个:(elem\“quantity”)只返回一个空字符串,当我试图将它转换为数字时,它就会爆炸。同样,用选项包装也没有帮助 有没有办法从XML片段中获取None、Nil甚至null?在这种情况下,您可以将命名空间URI与XM
<quantity xsi:nil="true"/>
对于解析,我使用scala.xml DSL。问题是我找不到任何方法来确定某物是否为零。这个:(elem\“quantity”)只返回一个空字符串,当我试图将它转换为数字时,它就会爆炸。同样,用选项包装也没有帮助
有没有办法从XML片段中获取None、Nil甚至null?在这种情况下,您可以将命名空间URI与XML with
attribute
方法一起使用,以获取“xsi:Nil”属性中的文本
以下是一个工作示例:
scala> val xml = <quantity xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
xml: scala.xml.Elem = <quantity xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"></quantity>
scala> xml.attribute("http://www.w3.org/2001/XMLSchema-instance", "nil")
res0: Option[Seq[scala.xml.Node]] = Some(true)
如果使用,您可以结合使用过滤器和otpional:
(__ \ "quantity").read[Node]
.filter(_.attribute("http://www.w3.org/2001/XMLSchema-instance", "nil").isEmpty)
.map(_.toDouble).optional
看
免责声明:我为Lucid软件工作,是xtract的贡献者。谢谢,这就解决了问题。我希望scala.xml可以处理零,但显然不是。
(__ \ "quantity").read[Node]
.filter(_.attribute("http://www.w3.org/2001/XMLSchema-instance", "nil").isEmpty)
.map(_.toDouble).optional