XPath从子元素中排除文本

XPath从子元素中排除文本,xpath,Xpath,我希望得到输出: 50ml milk 从以下代码: 50毫升 您可以使用 //ul[@class="ingredients-list__group"]// text()[not(ancestor::div[@class='tooltip'])] 如果您使用的是XPath 2.0,那么可以将其放入string-join()的调用中,以将其连接到单个字符串中。如果您坚持使用1.0,则必须将多个文本节点返回到调用应用程序,并在宿主语言代码中将它们连接在一起。使用xpath

我希望得到输出:

 50ml milk
从以下代码:

  • 50毫升

您可以使用

//ul[@class="ingredients-list__group"]//
   text()[not(ancestor::div[@class='tooltip'])]

如果您使用的是XPath 2.0,那么可以将其放入string-join()的调用中,以将其连接到单个字符串中。如果您坚持使用1.0,则必须将多个文本节点返回到调用应用程序,并在宿主语言代码中将它们连接在一起。

使用xpath<2.0:

//ul[@class="ingredients-list__group"]/li/concat(./text()[1], ./a/text()[1])

使用xpath
1.0:

concat(//ul[@class="ingredients-list__group"]/li/text()[1], //ul[@class="ingredients-list__group"]/li/a/text()[1])'

请说明您使用的是哪个XPath版本。对不起,我应该指定使用PHP,所以XPath 1.0和concat不起作用!然而,第二个代码非常接近。我对它进行了修改,使用了“|”合并操作符,但它将两个相关部分(50ml和milk)作为单独的数组项输出。你知道如何在查询时合并它们吗?因为我还有其他的
  • 要处理。@DrMikey,如果PHP是您案例中的一个关键标记,那么您应该在您的问题+您当前的PHP代码中添加它