xml - 反 XML scala 隐藏 xml 属性

标签 xml scala namespaces anti-xml

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/

相关文章:

java - Scala 中的容错 XML 解析

java - 我无法使用 Axis2 返回 json 对象

Scala 示例代码和弃用问题

c# - SceneManager 不存在 Unity 命名空间错误

node.js - 如何在我的环境声明文件中声明全局 NodeJS 变量?

python - 使用 lxml 在 Python 中存储系统路径的 XML

sql-server - 从数据库中检索数据时如何转义特殊字符?

Scala,扩展具有通用特征的对象

scala - 警告模块未找到 : org. fusesource.jansi#jansi;1.11 - Intellij/Scala

php - 命名空间的用途是什么,我是否以正确的方式使用它?