如何在 Scala XML 输出中生成整数文字作为属性?

发布于 2024-10-20 04:44:09 字数 757 浏览 2 评论 0原文

我希望以下代码生成包含以下内容的 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

I expect the following code to produce XML value with the following content:

<TestInteger value="10"/>

Compiler gives of an error

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}/>

What am I doing wrong? Are integer literals allowed in XML?

I'm using Scala 2.7.7

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

痴情 2024-10-27 04:44:09

根据 this 每个属性值,您的 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}/>

Look like your XML is violating XML specification according to this each attribute value must begin with a double quote. See AttValue rule.
Edit:
After some googling around it seems that scala.xml.UnprefixedAttribute has Constructor that only supports strings as values so since there is no build-in implicit conversion from Int's to String this code of yours will not work same as code :

val a : String = 10

Scala doesn't now how convert integers to strings automatically but following code however will work

implicit def intToString(i:Int) = i.toString  
val a : Int = 10
val b  = <Test attr={a}/>
秉烛思 2024-10-27 04:44:09

Scala XML 不支持 String 以外的任何类型。 可以扩展该库以添加Text的替代方案,但是,事实上,没有支持。

Scala XML has no support for any type other than String. One can extend the library to add alternatives to Text, but, as it is, there's no support.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文