2013-11-11 3 views
2

Я использую это, чтобы получить некоторые данные:CSQuery итерация

string s = dom["table .lotto strong"].Text(); 

Но я получаю все, что в 1 линии. Для я могу разобрать каждый элемент из этой таблицы отдельно и манипулировать им (например, добавьте <br /> после каждого элемента, поэтому я не получаю данные в 1 строке).

Документация на удивление не показывает итерацию.

+0

вы хотите HTML многострочный или просто перечислить все строки ('\ г \ n') в 's'? – Stefan

+0

Я поставлю этот текст, который я получу, в мой стол и покажу в html-представлении в mvc. источник с их сайта - обычная вещь table-td, но я не знаю синтаксиса с csquery. –

ответ

2

хаджа. Мне это удалось. Пример:

  CQ dom = CQ.CreateFromUrl("http://www.somewebsite.xxx"); 

     var rows = dom.Select(".box_results table.results-box_list tr"); 

     var output = @"<table class='table tableballs'> 
         <thead> 
          <tr> 
          <th></th> 
          <th>Syndicate</th> 
          <th>Draw Date</th> 
          <th>Results</th> 
          </tr> 
         </thead> 

         <tbody>"; 

     foreach (var row in rows.Has("td")) 
     { 
      output += "<tr>"; 
      CQ tdcells = row.Cq().Find("td"); 

      output += String.Format("<td></td><td>{0}</td><td>{1}</td>", 
       tdcells[0].Cq().Text(), 
       tdcells[1].Cq().Text()); 

      var uls = dom.Select(".ball_numbers ul"); 
      int count = 0; 

      output += "<td><ul class='balls'>"; 
      var numbersTrim = ""; 

      foreach (var ul in tdcells[2].Cq()) 
      { 
       CQ licells = ul.Cq().Find("li"); 

       foreach (var li in licells) 
       { 
        numbersTrim += String.Join("", "<li>" + licells[count].Cq().Text() + "</li>"); 
        count++; 
       } 
       output += numbersTrim; 
      } 
      count = 0; 
      output += @"</ul></td> 
         </tr>"; 
     } 

     output += @"</table>"; 

пользуются старыми приятелями старые Pals

5

Если вы посмотрите на описание функции Text, она вернет только строку. В принципе, если у вас есть несколько элементов, например, 2 div, он добавит все в одну строку. (Как string.join())

Если бы я получил то, что вы хотите, чтобы это как-то так =>

dom["table .lotto strong"].Each(dom=> { 
    //doing something what you need with dom var (dom is a IDomObject type) 
}); 
+0

См. Также https://github.com/jamietre/CsQuery, прокрутите вниз до каждого, для синтаксиса с аргументами 'i, e'. – goodeye

Смежные вопросы