2016-05-24 6 views
1

私はhtmlAgilityPackを使って自分のhtmlを解析しています。私の主な目標は、いくつかのdiv要素をテーブルの行要素の周りに追加することです。しかし、テーブル行にはさらにいくつかの要素があります。私は、フォントのスタイルがライトグリーンの背景色である場合にのみ、div要素でラップしたいと思います。しかし、私の現在のコードHtmlAgilityPack他のノードにノードを追加する

<tr> 
     <td style="padding-left: 40pt;"><font style="background-color: lightgreen" color="black">Tove</font></td> 
     <td style="padding-left: 40pt;"><font style="background-color: lightgreen" color="black">To</font></td> 
</tr> 

HtmlNode[] nodes = document.DocumentNode.SelectNodes("//tr[//td[//font[@style='background-color: lightgreen']]]").ToArray(); 
     foreach (HtmlNode node in nodes) 
     { 

       node.InnerHtml = node.InnerHtml.Replace( node.InnerHtml,"<div class=\"select-me\">" +node.InnerHtml + "</div>"); 
     } 

はこのHTMLを生成します。

<tr> 
     <div class="select-me"> 
      <td style="padding-left: 25pt;"><font style="background-color: white" color="black">&lt;to</font><font style="background-color: white" color="black">&gt;</font></td> 
      <td style="padding-left: 25pt;"><font style="background-color: white" color="black">&lt;to</font><font style="background-color: white" color="black">&gt;</font></td> 
     </div> 
    </tr> 
    <tr> 
     <div class="select-me"> 
      <td style="padding-left: 40pt;"><font style="background-color: lightgreen" color="black">Tove</font></td> 
      <td style="padding-left: 40pt;"><font style="background-color: lightgreen" color="black">To</font></td> 
     </div> 
    </tr> 
    <tr> 
     <div class="select-me"> 
      <td style="padding-left: 25pt;"><font style="background-color: white" color="black">&lt;/to&gt;</font></td> 
      <td style="padding-left: 25pt;"><font style="background-color: white" color="black">&lt;/to&gt;</font></td> 
     </div> 
    </tr> 

div要素はTRを囲むません は、ここに私のHTMLはどのように見えるかの例ですすべてのtrにdiv要素があります。背景要素lightgreenのfont要素を持つtr要素だけがdiv要素を含む必要があります。最初のtr要素を見ると、2つではなく4つのフォント要素があります。理想的には、私の目標は、tr要素の周りにdiv要素を挿入することです。これは、その要素の背景が明るい緑の場合です。私は他の投稿を見てきましたが、まだ問題があります。

正しいHTMLが好きでなければならない:

<div class="select-me"> 
     <tr> 
      <td style="padding-left: 25pt;"><font style="background-color: lightgreen" color="black">hello</font></td> 
      <td style="padding-left: 25pt;"><font style="background-color: lightgreen" color="black">goodbye</font></td> 
     </tr> 
    </div> 

答えて

1
for (var i = 0; i < nodes.Length; i++) 
{ 
    var node = nodes[i]; 
    node = HtmlNode.CreateNode(node.OuterHtml.Replace(node.OuterHtml, "<div class=\"select-me\">" + node.OuterHtml + "</div>")); 
} 
関連する問題