xml - 需要 XPath ends-with 函数

标签 xml xpath xmllint

我在使 XPath 函数工作时遇到问题。我应该只提取 XML 文件中名称以字母“z”结尾的条目,但我无法让它工作。我是 xmllint 用 cat 命令操作文件。

ends-with() 只适用于 XPath 2.0,我很确定服务器只有 XPath 1.0,所以我尝试输入这个命令:

cat //country/city[substring(@name, string-length(@name) - string-length('z') +1)]/name

但是我一直报错,我不确定是我写的不对还是写的方式不对。

最佳答案

您的 XPath 缺少检查 substring() 的返回值是否等于预期的字符串结束值 "z" 的步骤。所以正确的 XPath 应该是:

//country[substring(@name, string-length(@name) - string-length('z') +1) = 'z']/@name

并且由于 -string-length('z') +1 等于 0,可以省略该部分以获得更简单的 XPath,类似于发布的通过 @Kirill Polishchukother answer .

关于xml - 需要 XPath ends-with 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35399825/

相关文章:

xpath - 如何使用xmllint选择所有节点,其中相同级别的节点具有特定值?

xmllint : validate an XML file against two XSD schemas (envelope/payload)

java - 单击时显示对话框首选项

xslt - 存在哪些 XSLT 2.0 工具?

c# - HtmlAgilityPack 选择的子节点不符合预期

xml - 如何验证 xml 文件在 sh 或 bash 中是否有效?

Android - RotateAnimation - fromDegrees toDegrees 变量

java - 特定字段的可空属性值的 Jaxb 自定义

javascript - 查询。 text() 似乎在 IE8 中不起作用

xml - 使用last函数的XPath谓词