gpt4 book ai didi

xml - scala 中的简单 Xpath 查询

转载 作者:数据小太阳 更新时间:2023-10-29 01:56:36 25 4
gpt4 key购买 nike

我正在尝试使用 scala 运行 XPath 查询,但它似乎不起作用。我的 Xml 看起来像(简化):

<application>
<process type="output" size ="23">
<channel offset="0"/>
....
<channel offset="4"/>
</process>
<process type="input" size ="16">
<channel offset="20"/>
....
<channel offset="24"/>
</process>
</application>

我想使用 input 属性检索 process,为此我使用了这个 XPath 查询:

//process[@type='input']

这应该有效,我用 xpathtester 验证了它现在,我的 Scala 代码如下所示:

import scala.xml._
val x = XML.loadFile("file.xml")

val process = (x \\ "process[@type='input']") // will return empty NodeSeq() !!!

process 最终为空,它没有捕获我想要的内容。我是这样解决的:

val process = (x \\ "process" filter( _ \"@type" contains Text("input")))

这更丑陋。我的原始查询不起作用的任何已知原因?

最佳答案

不应使用“XPath”来描述 Scala 标准库支持的内容。 XPath 是一种成熟的表达式语言,目前有两个最终版本和第三个版本:

充其量您可以说 Scala 具有非常小的受 XPath 启发的操作子集。因此,您不能期望在不做更多工作的情况下直接将 XPath 表达式粘贴到 Scala。

第三方库可以为实际的 XPath 表达式提供更好的支持,包括:

  • Scales Xml
    • Scala 库
    • “提供了比普通 Scala XML 更像 XPath 的体验,路径看起来像 XPath 并且也像它们一样工作(具有许多相同的功能和轴)”
    • 如果我理解得很好,它仍然不是真正的 XPath
    • 旨在与 Scala 良好集成
  • Saxon
    • Java 库
    • 开源
    • 对 XPath 2(和 XSLT 2)的完整且一致的支持
    • 有一个适用于 DOM 和其他数据模型的 XPath API,但目前没有特定的 Scala 支持

关于xml - scala 中的简单 Xpath 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15743252/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com