【问题标题】:Why isn't count nodes working?为什么计数节点不起作用?
【发布时间】:2013-05-01 20:20:19
【问题描述】:

示例 XML:

<test name="1" result="Passed" starttimestamp="2013-05-07 10:10:44.361 -0700" endtimestamp="2013-05-07 10:10:45.361 -0700" elapsed="1" />
<test name="2" result="Passed" starttimestamp="2013-05-07 10:10:45.362 -0700" endtimestamp="2013-05-07 10:10:46.362 -0700" elapsed="1" />
<test name="3" result="Passed" starttimestamp="2013-05-07 10:10:46.363 -0700" endtimestamp="2013-05-07 10:10:53.365 -0700" elapsed="7" />
<test name="4" result="Passed" starttimestamp="2013-05-07 10:10:53.365 -0700" endtimestamp="2013-05-07 10:11:39.374 -0700" elapsed="46" />

首先,我试过了

xpath somefile.xml test

它给了我:

<test name="1" result="Passed" starttimestamp="2013-05-07 10:10:44.361 -0700" endtimestamp="2013-05-07 10:10:45.361 -0700" elapsed="1" />-- NODE --
<test name="2" result="Passed" starttimestamp="2013-05-07 10:10:45.362 -0700" endtimestamp="2013-05-07 10:10:46.362 -0700" elapsed="1" />-- NODE --
<test name="3" result="Passed" starttimestamp="2013-05-07 10:10:46.363 -0700" endtimestamp="2013-05-07 10:10:53.365 -0700" elapsed="7" />-- NODE --
<test name="4" result="Passed" starttimestamp="2013-05-07 10:10:53.365 -0700" endtimestamp="2013-05-07 10:11:39.374 -0700" elapsed="46" />-- NODE --

然后我想统计所有通过的测试,即所有有参数"Passed"的节点。所以我使用了以下 xpath 表达式:

xpath somefile.xml count(test[@result="Passed"])

但是它给了我:

bash:意外标记 `(' 附近的语法错误

然后我尝试了

xpath somefile.xml test[@result="Passed"]

它说:

没有找到节点

【问题讨论】:

    标签: xml perl bash xpath


    【解决方案1】:

    强烈怀疑这只是bash 以不同于您预期的方式处理您的命令行参数的问题。试试这个:

    xpath somefile.xml 'count(test[@result="Passed"])'
    

    这样,您的整个第二个命令行参数应该可以通过,而对([ 等没有任何特殊意义。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-19
      • 1970-01-01
      • 1970-01-01
      • 2013-12-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多