【发布时间】:2016-05-24 13:46:01
【问题描述】:
我正在使用 HtmlAgilityPack 来解析我的 html。我的主要目标是在表格行元素周围添加一些 div 元素。但是,表格行中还有更多元素。当字体的样式是浅绿色的背景色时,我只想用 div 元素包装它。 这是我的 html 的示例:
<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"><to</font><font style="background-color: white" color="black">></font></td>
<td style="padding-left: 25pt;"><font style="background-color: white" color="black"><to</font><font style="background-color: white" color="black">></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"></to></font></td>
<td style="padding-left: 25pt;"><font style="background-color: white" color="black"></to></font></td>
</div>
</tr>
div 元素不包围 tr 元素并且每个 tr 都有一个 div 元素,当只有具有背景颜色 lightgreen 字体元素的 tr 元素应该包含一个 div 元素时。如果您查看第一个 tr 元素,它有 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>
【问题讨论】: