【发布时间】:2010-06-16 19:01:56
【问题描述】:
在 scala 中用于对文档执行以下 XPath 查询的最简单 API 是什么?
//s:Annotation[@type='attitude']/s:Content/s:Parameter[@role='type' and not(text())]
//s:Annotation[s:Content/s:Parameter[@role='id' and not(text())]]/@type
(s 被定义为特定命名空间的昵称)
我能找到的关于 Scala 的 XML 库的唯一文档没有关于执行复杂的真实 XPath 查询的信息。
我曾经喜欢 JDOM 用于此目的(在 Java 中),但由于 JDOM 不支持泛型,因此在 Scala 中使用会很痛苦。 (其他用于 Java 的 XML 库在 Java 中往往更加痛苦,但我承认我不太了解情况。)
【问题讨论】:
-
s:...是什么意思?我假设它与命名空间有关,但我在 XPath 规范中找不到。 -
是的,它是一个命名空间前缀。请参阅介绍的倒数第二段,其中说“在以下语法中,非终结符 QName 和 NCName 在 [XML Names] 中定义,S 在 [XML] 中定义。”表达式
s:Annotation是一个 QName。