2017-06-30 54 views

回答

0

我不確定你的意思是「在樹視圖中」,但我會忽略這個域特定的部分,並告訴你如何獲得一些節點等(順便說一下:你引用的頁面似乎已經過時/錯 - 如果你想讓它得到正確的回答,請將特定的代碼片段添加到你的問題中)。

爲了簡單起見,我假定一個HTML一樣

<body> 
    <... some_nesting> 
    <div class="topic-class"> 
     <h2>Topic Title</h2> 
     <... some_nesting> 
     <div class="category-class"> 
      <h3>Category Title</h3> 
      <... some_nesting> 
      <a href="caption-link" class="caption-class">Caption Title</a> 
      </...> 
      <more ... /> 
     </div> 
     <more ... /> 
     </...> 
    </div> 
    <more ... /> 
    </...> 
</body> 

現在,我們需要對兩兩件事的工作:

  1. 我們尋找什麼(識別標籤&結構)
  2. 我們怎麼想將我們的發現(地圖層次結構)分組

在簡單的HTML w e很容易將CSS類識別爲標識符(例如,.topic-class,.category-class,.caption-link),特別是與給定的結構和標籤組合。關於分組,我們需要從主題到分類到標題。

總而言之,我們可以編寫更簡潔的LINQ或更多顯式可讀代碼來生成分組結構。爲了說明目的,我寧願選擇後者:

// document is current document returned from OpenAsync of an IBrowsingContext instance 
var topics = document.QuerySelectorAll("body > .topic-class"); 

foreach (var topic in topics) 
{ 
    var topicTitle = topic.QuerySelector("h2")?.TextContent; 
    var categories = topic.QuerySelectorAll(".category-class"); 

    foreach (var category of categories) 
    { 
     var categoryTitle = category.QuerySelector("h3")?.TextContent; 
     var captions = category.QuerySelectorAll("a.caption-link"); 

     foreach (IHtmlAnchorElement caption of captions) 
     { 
      var captionTitle = caption.TextContent; 
      var link = caption.Href; 
     } 
    } 
} 

這是怎麼離開的追加主題,類別和標題給一個適當的數據容器,用於顯示它。但所有的信息都在那裏,你只需要知道你想如何使用/建模。

希望這會有所幫助!