如何使用XPath匹配零个或多个?

时间:2015-10-29 08:19:11

标签: python regex xml xpath lxml

我正在使用lxml和python,如下所示:

trs = doc.xpath("//div[@id='divGridData']/div[2]/table/tr")
if not trs:
    trs = doc.xpath("//div[@id='divGridData']/div[2]/table/tbody/tr")

所以问题是tbody。我想知道我是否可以将两个XPath表达式改为一个类似?的正则表达式。

3 个答案:

答案 0 :(得分:2)

使用或运算符:|如下

"//div[@id='divGridData']/div[2]/table/tr
|
//div[@id='divGridData']/div[2]/table/tbody/tr"

答案 1 :(得分:1)

要选择tr下的//div[@id='divGridData']/div[2]/table元素,无论是否有干预tbody,请在XPath中再次使用//

"//div[@id='divGridData']/div[2]/table//tr"

答案 2 :(得分:0)

我不知道"深度"您的结构是,但如果table / tbody元素正下方只有//div[@id='divGridData']/div[2]/table[./tr | ./tbody]//tr 元素的一个维度,那么您可以将其缩短为:

tr

否则(如果深层结构中有更多eyJ1cmxTZXJ2bGV0IjoiaHR0cHM6Ly9kZW1vcy5pbmZhcGxpYy5lcy9pbnZlbnRhcmlvd2ViL0ludmVudGFyaW9KU09OIiwidG9rZW4iOiI1MjFjY2I5Ny0wNWZkLTRjZGEtYjYxMi00ZTM4YTcwM2MwODkiLCJpZENsaWVudGUiOiJkZW1vcyJ3 元素在更深层次,你不感兴趣,我也不知道任何其他解决方案,而不是@ hjpotter92已经提供的解决方案。