我需要使用HTML Agility Pack从所有表中检索所有tr
。
HTML:
<section class="content-section" id="more">
<div class="row">
<div class="col-xs-6"></div>
<div class="col-xs-6">
<h2>Specs</h2>
<div>
<div>
<table>
<thead>
<tr><th colspan="2"> test</th></tr>
</thead>
<tbody>
<tr><td>2</td><td>b</td></tr>
<tr><td>1</td><td>a</td></tr>
</tbody>
</table>
<table>
<tbody>
<tr><td>3</td><td>c</td></tr>
<tr><td>4</td><td>d</td></tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</section>
C#:
HtmlNodeCollection featuresNode = document.DocumentNode.SelectNodes("//*[@id='more']/div/div[2]/div/div[1]/table/tbody/tr");
我只能获取第一个表tr
,而不能获取tr
中的所有两个表HtmlNodeCollection
。
答案 0 :(得分:2)
要获取所有tr
个节点,包括thead
中的一个,请将您的XPath
更新为:
"//*[@id='more']/div/div[2]/div/div[1]/table//tr"
这个简化的XPath
也应该起作用:
"//*[@id='more']//tr"
如果您只需要tr
中的tbody
,请使用:
"//*[@id='more']//tbody//tr"
或从tr
中排除thead
,使用:
"//*[@id='more']//tr[not(ancestor::thead)]"