【问题标题】:Xpath Matching a node and getting the value of itXpath 匹配一个节点并获取它的值
【发布时间】:2021-10-23 13:00:03
【问题描述】:
  1. 下面是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() 函数将空格转换为逗号。

标签: xslt xpath


【解决方案1】:

我没有看到您要发布的 XML,但您应该能够在 xpath 表达式的末尾添加所需的属性:

/W4N/LUNGROUP/OBJECT[tokenize(@lunIds,',')='228']/@lungroupID

【讨论】:

  • 如果我想在多个值匹配时将 lungroupID 逗号分隔开,还有一件事。我需要做什么更改?下面是 xml: w3.org/2001/XMLSchema" xmlns:functx="functx.com"><LUNGROUP><OBJECTlungroupID="0" lunIds="0,221,228 "/>
  • 您可以使用此表达式选择属性值://*/@lungroupID 至于逗号分隔,这取决于您编码的语言。
  • @Barun,tokenize 的使用建议您使用 XPath 2 或更高版本,因此对于逗号分隔的结果,您还可以使用 string-join 函数,例如string-join(/W4N/LUNGROUP/OBJECT[tokenize(@lunIds,',')='228']/@lungroupID, ',').
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多