3

我希望以下代码生成具有以下内容的 XML 值:

<TestInteger value="10"/>

编译器给出错误

scala> import scala.xml._
import scala.xml._
scala> val x:Int = 10
x: Int = 10
scala> <TestInteger value={x}/>
<console>:8: error: overloaded method constructor UnprefixedAttribute with alternatives (String,Option[Seq[scala.xml.Node]],scala.xml.MetaData)scala.xml.UnprefixedAttribute <and> (String,String,scala.xml.MetaData)scala.xml.UnprefixedAttribute <and> (String,Seq[scala.xml.Node],scala.xml.MetaData)scala.xml.UnprefixedAttribute cannot be applied to (java.lang.String,Int,scala.xml.MetaData)
       <TestInteger value={x}/>

我究竟做错了什么?XML 中是否允许使用整数文字?

我正在使用 Scala 2.7.7

4

2 回答 2

3

看起来您的 XML 违反了 XML 规范,因此每个属性值都必须以双引号开头。请参阅 AttValue 规则。
编辑
经过一番谷歌搜索后,似乎scala.xml.UnprefixedAttribute具有仅支持字符串作为值的构造函数,因此由于没有从 Int 到 String 的内置隐式转换,因此您的代码与代码不同:

val a : String = 10

Scala 现在没有如何自动将整数转换为字符串,但是下面的代码可以工作

implicit def intToString(i:Int) = i.toString  
val a : Int = 10
val b  = <Test attr={a}/>
于 2011-03-05T12:45:47.143 回答
1

Scala XML 不支持除String. 可以扩展库以添加替代方案Text但实际上不支持。

于 2011-03-05T15:30:22.043 回答