如何在列表中获取第一个标记?

时间:2018-04-21 13:35:21

标签: c# html-agility-pack

假设我有以下列表:

<div id='page_competition_1_block_competition_left_tree_2'>
    <div>   
       <ul> 
          <li>
              <a href="#" />
              <ul>
                  <li>
                      <a href="#">
                   </li>
               </ul>
           </li>
           <li>
               <a href="#" />
            ...

如何获取每个a的第一个li标记?

我尝试使用:

HtmlNodeCollection compsLi = doc.DocumentNode             
.SelectNodes("div[@id='page_match_1_block_competition_left_tree_2']//div//ul/li[1]");

但这将返回null

2 个答案:

答案 0 :(得分:0)

您应该能够遍历检索到的compsLi对象。此外,我认为您的选择器中不需要[1]。获得<li>项后,您应该可以执行以下操作:

foreach(var node in compsLi)
{
  var aNode = node.SelectSingleNode("./a");
  ...
}

您可以查看here类似的内容。

答案 1 :(得分:0)

您需要指定一个/而不是//,因此:

HtmlNodeCollection compsLi = doc.DocumentNode.SelectNodes("div[@id='page_match_1_block_competition_left_tree_2']//ul/li/a");

本质:

/:搜索当前节点。

//:从根文档节点进行搜索。