Xpath 匹配一个节点并获取它的值
Posted
技术标签:
【中文标题】Xpath 匹配一个节点并获取它的值【英文标题】:Xpath Matching a node and getting the value of it 【发布时间】:2021-10-23 13:00:03 【问题描述】:-
下面是xml文件:
file1.xml
<?xml version="1.0" encoding="UTF-8"?><W4N xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:functx="http://www.functx.com"><LUNGROUP><OBJECT lungroupID="0" lunIds="0,221,228"/></LUNGROUP><LUNGROUP><OBJECT lungroupID="1" lunIds="1,3,5/></LUNGROUP></W4N>
我想匹配 lunIds。我给出了下面的 xpath 表达式 /W4N/LUNGROUP/OBJECT[tokenize(@lunIds,',')='228'] 它显示结果为 Elements found: 1 现在我的要求是获取匹配元素的 lungroupID。如何使用 xpath 执行此操作?非常感谢任何帮助。
【问题讨论】:
/W4N/LUNGROUP/OBJECT[tokenize(@lunIds,',')='228']/@lungroupID
如果我想在多个值匹配的情况下将 lungroupID 逗号分隔开,还有一件事。我需要做什么更改?
@Barun 如果您将xsl:value-of
指令与上述表达式一起使用,您将获得一个以空格分隔的选定值列表。您可以使用translate()
函数将空格转换为逗号。
【参考方案1】:
我没有看到您要发布的 XML,但您应该能够在 xpath 表达式的末尾添加所需的属性:
/W4N/LUNGROUP/OBJECT[tokenize(@lunIds,',')='228']/@lungroupID
【讨论】:
如果我想在多个值匹配时将 lungroupID 逗号分隔开,还有一件事。我需要做什么更改?下面是 xml:tokenize
的使用建议您使用 XPath 2 或更高版本,因此对于逗号分隔的结果,您还可以使用 string-join
函数,例如string-join(/W4N/LUNGROUP/OBJECT[tokenize(@lunIds,',')='228']/@lungroupID, ',')
.以上是关于Xpath 匹配一个节点并获取它的值的主要内容,如果未能解决你的问题,请参考以下文章