2014-11-24 47 views
0

我在使用html敏捷包时遇到了一些麻烦 我在一个或多个表中重复使用了相同的class =“related-news”的随机生成的trs,但他们不一定跟随彼此,大多数时候他们之间没有阶级。 我想要做的是获得这些trs的td的innerText没有类,并将它们放在一起与tr class =“related-news”一起排列在它们上面html敏捷包得到tr的tr的innertertext tr的下一个tr

这个是HTML

<tr class="related-news"> 
    <td>some text</td> 
    <td>some text</td> 
    <td>some text</td> 
</tr> 
<tr class=""> 
    <td>some text</td> 
    <td>some text</td> 
    <td>some text</td> 
</tr> 
<tr class=""> 
    <td>some text</td> 
    <td>some text</td> 
    <td>some text</td> 
</tr> 
<tr class=""> 
    <td>some text</td> 
    <td>some text</td> 
    <td>some text</td> 
</tr> 
<tr class="related-news"> 
    <td>some text</td> 
    <td>some text</td> 
    <td>some text</td> 
</tr> 
<tr class=""> 
    <td>some text</td> 
    <td>some text</td> 
    <td>some text</td> 
</tr> 
<tr class="related-news"> 
    <td>some text</td> 
    <td>some text</td> 
    <td>some text</td> 
</tr> 

没有办法知道有没有阶级许多TRS将与类TRS之间gerenated“相关的新闻,”我需要把所有的TDS的内文和我没有任何问题的探析与此问题是每当我达到与类“相关新闻”tr分开他们

东西是这样的:

如果TR有类“相关新闻” 得到这个TR的TS的innerText属性和未来TRS,而他们不上课“相关新闻” 将InnerText如果与“相关新闻”类中的TR是达成了一个新的arrey 并继续

这甚至可能与html敏捷包?

每次都遇到TD的的innerText与此代码:

HtmlNodeCollection nodes2 = doc.DocumentNode.SelectNodes("//tr[@class='related-news']/td"); 
     foreach (HtmlNode node in nodes2) 
     { 
      string Text = node.InnerText; 
     } 

我不知道如何继续或添加一个条件

+1

是的,只需编写符合您声明的代码即可。请说明您遇到问题的部分代码。 – 2014-11-24 17:25:25

+0

请阅读我在底部添加的代码 – user1435897 2014-11-24 17:34:40

回答

0

您正在寻找这样的事情?

List<string> Text = new List<string>(); 

foreach (HtmlNode node in nodes2) 
{ 
    Text.Add(node.InnerText); 

} 
0

这只是一个很常见的操作表现:经历一个顺序列表和组合的东西。

基本思路是获得所有节点,而不仅仅是“相关新闻”节点。然后,你浏览列表并对它们进行分组。下面的伪代码显示了它是如何完成的。

List<string> TextLines = new List<string>(); 
StringBuilder sb = new StringBuilder(); 
foreach (var node in nodes) 
{ 
    if node class == "related-news" 
    { 
     // we've found a new "related-news" node. 
     // add the previous stuff to the list 
     if (sb.Length > 0) 
      TextLines.Add(sb.ToString()); 
     sb = new StringBuilder(node.InnerText); 
    } 
    else 
    { 
     sb.Append(node.InnerText); 
    } 
} 
// and don't forget the last one 
if (sb.Length > 0) 
    TextLines.Add(sb.ToString()); 

注意,代码只是关心<tr>标签是具有类“相关新闻”和那些没有。如果还有其他类需要以不同方式分组,则必须修改代码。