xmllint shell 未显示计数 xpath 表达式中的数字?

xmllint shell 未显示计数 xpath 表达式中的数字?

我在 cygwin 上使用 xmllint 的交互式 shell。我想计算节点的数量,但 xmllint 的行为似乎并不符合我的预期:

$> cat test.xml
<?xml version="1.0"?>
<result>
  <node>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
  </node>
</result>
$> xmllint --shell test.xml
/ > cat count(/result/node/item)
count(/result/node/item) is a number

它说这是一个数字,但它并没有以我在网络搜索中看到的方式显示该数字:

count(/result/node/item) is a number : 5

这里出了什么问题?

$> xmllint --version
xmllint: using libxml version 20706
   compiled with: Threads Tree Output Push Reader Patterns Writer SAXv1 FTP HTTP DTDValid HTML Legacy C14N Catalog XPath XPointer XInclude Iconv ISO8859X Unicode Regexps Automata Expr Schemas Schematron Modules Debug Zlib

答案1

我意识到@Stephane 在评论中提到了这一点,但我遇到了这种技术,并打算在看到他对相同解决方案的评论之前发布这个答案。不确定这样做的礼仪,但这就是我发现的。如果在别人的评论上发表答案不合适,LMK 和我可以删除这个答案。

解决方案

您需要使用xpathxmllint 中的命令来显示从函数返回的结果count

$ xmllint --shell test.xml 
/ > cat         
<?xml version="1.0"?>
<result>
  <node>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
  </node>
</result>

/ > xpath count(/result/node/item)
Object is a number : 5
/ > 

在这个网站上找到了答案:在 xmllint Shell 中使用 XPath 表达式

相关内容