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 表达式建议的结构。
如何缩短以下内容?
$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 表达式建议的结构。