Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xpath XQuery-从匹配给定模式的父节点获取节点_Xpath_Xquery - Fatal编程技术网

Xpath XQuery-从匹配给定模式的父节点获取节点

Xpath XQuery-从匹配给定模式的父节点获取节点,xpath,xquery,Xpath,Xquery,我想根据给定的模式筛选XML节点的子节点 我的XML <parent> <total1>10</total1> <total2>15</total2> <value1>1</value1> <value2>2</value2> </parent> 预期结果 <parent> <total1>10</total1> &

我想根据给定的模式筛选XML节点的子节点

我的XML

<parent>
  <total1>10</total1>
  <total2>15</total2>
  <value1>1</value1>
  <value2>2</value2>
</parent>
预期结果

<parent>
  <total1>10</total1>
  <total2>15</total2>
</parent>
另外,我希望能够在输出中显示类似的内容

<total1>number(10)</total1>
<total2>number(15)</total2>
编号(10)
数字(15)

在输出中,将节点值从字符串转换为数字<代码>编号(10)来自
编号(text())

两个小更正:

  • 您需要检查元素的名称;否则,将检查元素的字符串值是否以给定的子字符串开头
  • 总计
    需要报价;否则,它将被视为XPath表达式
结果如下:

for $n in //parent/*[starts-with(name(), 'total')]
return $n

谢谢是否可以在输出中分隔名称和值?我想将
number(text())
显示为节点值这一切都可以通过XQuery实现;但我建议您为此打开一个新的StackOverflow问题,或者(甚至更好)先浏览其他用户的答案。我没有在上面找到完整的答案,因此,我将打开一个新问题可能是“…我希望能够在输出中显示数字(text())”的副本。那么
返回$n/number(text())有什么问题吗
?这是因为我想保留节点名称(我将更新我的问题)
返回($n/name(),$n/number(text())
<total1>number(10)</total1>
<total2>number(15)</total2>
for $n in //parent/*[starts-with(name(), 'total')]
return $n