【问题标题】:HtmlAgilityPack Wildcard Search in PowershellPowershell 中的 HtmlAgilityPack 通配符搜索
【发布时间】:2017-01-09 15:54:58
【问题描述】:

我怎样才能缩短以下内容?

$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]

第二个表嵌套在第一个表中,我想将上面的SelectSingleNode 缩短两次,如下所示

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

有没有这样的通配符方法?

【问题讨论】:

  • 试试.//table//table。这应该匹配嵌套在其他表中的所有表。
  • 是的。我会把这个作为答案。谢谢。

标签: html powershell dom xpath html-agility-pack


【解决方案1】:

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

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

<table>
  <tr>
    <table>...</table>   <!-- nested table would have to go here -->
  </tr>
</table>

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

【讨论】:

    猜你喜欢
    • 2014-12-09
    • 2020-02-20
    • 1970-01-01
    • 2016-10-31
    • 2011-07-10
    • 1970-01-01
    • 2011-03-14
    • 2018-12-06
    • 1970-01-01
    相关资源
    最近更新 更多