gpt4 book ai didi

java - Xpath 和 VTD-XML,获取节点索引

转载 作者:行者123 更新时间:2023-11-30 09:52:23 25 4
gpt4 key购买 nike

我正在使用 VTD-XML 来解析一些带有 Xpath 表达式的 XML 文件,现在出现了以下内容:经过一些搜索后,我需要知道 xml 树中节点的索引我发现像这样的表达

count(//ds[name='cpu1']/preceding-sibling::*)+1

为我提供了所需的索引 - 我的问题是:到目前为止,我正在使用 VTD-XML(因为它很快)是否有可能在 VTD-XML 中使用这种表达式?使用给定的表达式只会导致 XpathParseException。

我的 xml 看起来像这样:

<?xml version="1.0" encoding="UTF-8"?>
<rrd>
<version>0003</version>
<step>5</step>
<lastupdate>1290585118</lastupdate>
<ds>
<name>cpu1</name>
<type>DERIVE</type>
<minimal_heartbeat>300.0000</minimal_heartbeat>
<min>0.0</min>
<max>1.0000</max>
<last_ds>69375.6708</last_ds>
<value>0.0001</value>
<unknown_sec>0</unknown_sec>
</ds>
<ds>
<name>cpu0</name>
<type>DERIVE</type>
<minimal_heartbeat>300.0000</minimal_heartbeat>
<min>0.0</min>
<max>1.0000</max>
<last_ds>69375.6708</last_ds>
<value>0.0001</value>
<unknown_sec>0</unknown_sec>
</ds>
...

最佳答案

根据FAQ ,

VTD-XML fully conforms with W3C XPath 1.0 recommendation. It supports all the built-in functions. It also supports many XPath 2.0 functions.

因此,如果 VTD-XML 拒绝有效的 XPath 1.0 表达式,则 VTD-XML 中似乎存在错误。但问题可能出在 XPath 表达式中,或者出在使用 VTD-XML 的代码中。

您提供的 XPath 表达式似乎是有效的。虽然它不是很有效,所以可能有更好的方法在 VTD-XML 中执行此操作,而无需使用 XPath。例如。遍历输入记录并计数,直到到达名称为 cpu1ds 元素。

关于java - Xpath 和 VTD-XML,获取节点索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4265196/

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