运行 批量处理 xpath 表达式

Run xpath expression in batch

我们有很多 xpath 表达式需要 运行 针对很多文档,我想加快速度。 目前,我们加载文档和 运行 所有 xpath。如果有 1000 个文档和 1000 个 xpath,则大约为 1,000,000 运行s。我相信每个 xpath 都从根节点开始遍历 xml(尽管我不确定它是如何在库中实现的)。我想制作类似批处理 xpath 运行 的东西,其中仅通过一次 xml 遍历,所有 1000 个 xpath 都会被评估。换句话说,对于 1 个文档,只需要一次 xml 遍历即可评估 1000 个 xpath。是否已经实现了类似的东西 & 它甚至可以加快 xpath 的执行速度吗?

编辑: 我唯一输入的是 xpaths 列表和 xml 文档列表。由于它们可以由用户动态 added/removed,我主要是在寻找一种在 运行 时间内对 xpath 进行分组的解决方案(不要在预配置中这样做,尽管它可能有助于加快框架速度-提供的 xpaths)。

你能在层次结构中组织你的 xpaths 吗? 例如,而不是 运行ning

  • //a/b/x
  • //a/b/y
  • //a/b/z

您能否预处理 xpath 以将常见前缀组合在一起,以便您 运行 xyz 覆盖 [=17= 的结果]?我只能假设 运行ning 这 4 个 xpaths (//a/b, x, y, z) 比 运行ning 3上面的xpath。此外,如果 //a/b 失败,您可以避免 运行 设置子 xpaths。

我可以想象这样的配置:

<xpaths>
    <xpathparent value="//a/b">
        <xpath value="x" handler="xHandler" />
        <xpath value="y" handler="yHandler" />
        <xpath value="z" handler="zHandler" />
    </xpathparent>
<xpaths>

我建议将数据放在 XML 数据库中,例如 BaseX 或 eXist。这些产品构建索引,用于加速查询执行。建立索引是有成本的,但是超过1000个查询应该保存很多次。