如何用XPath提取XML中cip4:SourceTrimBox属性的指定数值
提取cip4:SourceTrimBox属性最后一个数值的XPath方案
支持XPath 2.0+的环境(部分新版测试工具)
直接用字符串分割+取最后一项的语法,简洁高效:
tokenize((//DPM)[2]//*[name()='cip4:RunList']/@*[name()='cip4:SourceTrimBox'], '\s+')[last()]
原理是用tokenize()按空格把属性值拆成数组,[last()]直接取数组最后一个元素。
仅支持XPath 1.0的环境(多数旧工具/遗留系统)
XPath1.0没有原生分割函数,只能靠多层字符串截取,前提是属性值为固定4个空格分隔的数值格式:
substring-after( substring-after( substring-after( (//DPM)[2]//*[name()='cip4:RunList']/@*[name()='cip4:SourceTrimBox'], ' ' ), ' ' ), ' ' )
每一层substring-after依次去掉前面的一个数值和空格,三次截取后剩下的就是最后一个数值。
兼容性最强的替代方法
如果上面的XPath写法在你的VSCode插件里不生效,先直接提取完整的属性字符串:
(//DPM)[2]//*[name()='cip4:RunList']/@*[name()='cip4:SourceTrimBox']
拿到完整值后,用你熟悉的工具按空格拆分字符串,取最后一项即可,这种方式不用考虑XPath版本限制,也不会影响现有工作流。
内容的提问来源于stack exchange,提问作者Scott Haugaard
相关产品推荐
相关产品推荐

