首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Xpath和VTD-XML,获取节点索引

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

Stack Overflow用户
提问于 2010-11-24 17:26:29
回答 1查看 1.1K关注 0票数 2

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

代码语言:javascript
复制
count(//ds[name='cpu1']/preceding-sibling::*)+1

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

我的xml如下所示:

代码语言:javascript
复制
<?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>
...
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-11-24 20:29:58

根据FAQ的说法

XML

完全符合W3C XPath 1.0推荐标准。它支持所有的内置函数。它还支持许多XPath 2.0函数。

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

您给出的XPath表达式似乎是有效的。但是效率不是很高,所以在VTD-XML中可能有一种更好的方法来做到这一点,而不是使用XPath。例如,遍历输入记录并进行计数,直到得到名为cpu1ds元素。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4265196

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档