Anti-xml 将成为 Scala 中的后继 xml 库。但我发现了一些奇怪的东西。
输入
package com.twitter.sample
import com.codecommit.antixml._
object ReadingNamespaceXml extends Application{
val xml = <tra:route xmlns:tra="trace">
<spo:id xmlnls:spo="sport">23232322</spo:id>
<tra:service ref="go" xsi:type="ref:manualService" xmlns:ref="ServiceRef"/>
</tra:route>.convert
val route = xml \ "route"
Console println route.unselect
}
输出:
<tra:route>
<spo:id xmlnls:spo="sport">23232322</spo:id>
<tra:service xsi:type="ref:manualService" ref="go"/>
</tra:route>
所以,输入的xml和输出的不一样。为什么?
最佳答案
答案是这是一个错误。
幸运的是,有一个简单的解决办法。我不知道 Anti-XML 的完整情况,但 Daniel Spiewak 似乎不再维护它 — his repo已经很多年没有被触及了,并且仍然在 Scala 2.9.1 上。然而有a fork (由一家名为 Arktekk 的公司)修复了此错误,已构建 2.10 等。它也是 available from Maven Central 。我对 Arktekk 一无所知,但我已经愉快地使用这个 fork 一段时间了。
为了证明它有效,这里有一个使用旧的 0.3 版本的简化示例:
scala> import com.codecommit.antixml._
import com.codecommit.antixml._
scala> <foo ref="bar" xmlns:ref="baz"/>.convert
res0: com.codecommit.antixml.Elem = <foo ref="bar"/>
现在使用 Arktekk 的 0.5.1:
scala> import com.codecommit.antixml._
import com.codecommit.antixml._
scala> <foo ref="bar" xmlns:ref="baz"/>.convert
res0: com.codecommit.antixml.Elem = <foo xmlns:ref="baz" ref="bar"/>
这正是您所期望的。
关于xml - 反 XML scala 隐藏 xml 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20020729/