你如何通过 xpath select 两个不同的标签,都在不同的级别,其中一个是可选的
How do you select two different tags via xpath, both at different levels, when one of them is optional
我遇到的情况是同一页面上混合了这些格式的数据。换句话说,一些行将显示为:
some lengthy XPATH_X uptill here:
<td/>
<td>
I Need this element td
</td>
<td/>
<td/>
<td/>
<td/>
其他几行将以这种格式显示:
the same lengthy XPATH_X uptill here:
<td/>
<td>
<span>
I Need this element span
</span>
</td>
<td/>
<td/>
<td/>
<td/>
请注意,每个 td 标签没有不同的属性。在这两种情况下,我都需要 select 第二行 (td)。
我正在尝试使用以下 xpath 捕获这两个元素:
XPATH_X/*[self::td[position()=2] or self::td[position()=2]/span]
我在页面上试过了,但出于某种原因它没有 select 任何东西。
有人可以帮我解决这个问题吗?我已经为此花费了 2 个多小时。
您应该尝试 XPATH_X/td[2]//text()
检索文本,无论它是在 td
的根部还是在子标签中
你可以测试一下here;在此测试中,我检索了三个结果:
td
中span
中的文本
td
根部的文本
td
的根部和封闭的 span
内的文本(如果这对您不起作用,则应仅检索 td
的文本如果没有 span
,则使用 XPATH_X/td[position()=2 and not(./span)]/text() | XPATH_X/td[2]/span/text()
)
要检索包含文本节点的元素而不是文本节点本身,您可以使用以下命令:
XPATH_X/td[2]//self::node()[text()]
我遇到的情况是同一页面上混合了这些格式的数据。换句话说,一些行将显示为:
some lengthy XPATH_X uptill here:
<td/>
<td>
I Need this element td
</td>
<td/>
<td/>
<td/>
<td/>
其他几行将以这种格式显示:
the same lengthy XPATH_X uptill here:
<td/>
<td>
<span>
I Need this element span
</span>
</td>
<td/>
<td/>
<td/>
<td/>
请注意,每个 td 标签没有不同的属性。在这两种情况下,我都需要 select 第二行 (td)。
我正在尝试使用以下 xpath 捕获这两个元素:
XPATH_X/*[self::td[position()=2] or self::td[position()=2]/span]
我在页面上试过了,但出于某种原因它没有 select 任何东西。
有人可以帮我解决这个问题吗?我已经为此花费了 2 个多小时。
您应该尝试 XPATH_X/td[2]//text()
检索文本,无论它是在 td
的根部还是在子标签中
你可以测试一下here;在此测试中,我检索了三个结果:
td
中td
根部的文本
td
的根部和封闭的span
内的文本(如果这对您不起作用,则应仅检索td
的文本如果没有span
,则使用XPATH_X/td[position()=2 and not(./span)]/text() | XPATH_X/td[2]/span/text()
)
span
中的文本
要检索包含文本节点的元素而不是文本节点本身,您可以使用以下命令:
XPATH_X/td[2]//self::node()[text()]