Powershell 中的 HtmlAgilityPack 通配符搜索

HtmlAgilityPack Wildcard Search in Powershell

如何缩短以下内容?

$contactsBlock是一个HTMLAgilityPack节点,XPath:/html[1]/body[1]/div[3]/div[2]/div[2]/div[1]/div[1]/div[2]/div[1]/div[3]/div[5]/div[1]/div[2]

$contactsBlock.SelectSingleNode(".//table").SelectSingleNode(".//table")

所需 XPath 的结果:/html[1]/body[1]/div[3]/div[2]/div[2]/div[1]/div[1]/div[2]/div[1]/div[3]/div[5]/div[1]/div[2]/table[1]/tr[2]/td[1]/div[1]/div[2]/table[1]

第二个table嵌套在第一个里面,我想把上面的SelectSingleNode缩短两次,变成这样

$contactsBlock.SelectSingleNode(".//table/*/table") 并跳过中间部分。

有没有办法像这样通配符?

XPath 表达式 .//table//table 应该匹配当前节点下其他 table 中嵌套的所有 table。双正斜杠匹配任意长度的路径。

.//table/*/table 不太可能给你匹配,因为星号通配符匹配一个节点(即一级层次结构),所以嵌套的 table 必须是首先 table:

<table>
  <tr>
    <strike><table>...</table></strike> <!-- 嵌套的 table 必须放在这里 -->
  </tr>
</table>

这很不寻常。也不符合您问题中 XPath 表达式建议的结构。