2017-01-09 6 views
1

以下はどのように短縮できますか?所望の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]HtmlAgilityPack Powershellでのワイルドカード検索

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

結果:/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]

第二テーブルは最初にネストされている、私は上記を短くしたい

$contactsBlockはHTMLAgilityPackノードのXPathでありますSelectSingleNodeこのようなものに2回

$contactsBlock.SelectSingleNode(".//table/*/table")との間をスキップします。

ワイルドカードにはこのような方法がありますか?

+1

'.// table // table'を試してください。これは、他のテーブルにネストされたすべてのテーブルと一致する必要があります。 –

+0

はい。私はこれを答えにします。ありがとうございました。 – STWilson

答えて

1

XPath式.//table//tableは、現在のノードの下にある他のテーブルにネストされているすべてのテーブルと一致する必要があります。ダブルスラッシュは任意の長さのパスに一致します。

<table> 
    <tr> 
    
             
  
    <table>...</table> 
   <!-- nested table would have to go here --> 
    </tr> 
</table>
:アスタリスクのワイルドカードは、一つのノード(階層のすなわち、1つのレベル)に一致するので、ネストされたテーブルは、最初のテーブルの孫ノードでなければならないので

.//table/*/tableは、あなたにマッチを与えることはほとんどありません

これは非常に珍しいでしょう。あなたの質問からXPath式で提案された構造にも一致しません。

関連する問題