1

我需要<tbody>在下面的代码中删除一个 html 标签,

<TABLE>
  <TBODY>
  <TR>    
    <TD></TD>
    <TD></TD>
    <TD></TD></TR>
  <TR>    
    <TD valign="bottom"></TD>
    <TD valign="bottom"></TD>
    <TD valign="bottom"></TD></TR>
  </TBODY>
</TABLE>

我在用着,

      var document = new HtmlDocument();
      document.LoadHtml(<URL>);
      if (document.DocumentNode.SelectSingleNode("//tbody") != null)
                {
                    document.DocumentNode.SelectSingleNode("//tbody").Remove();
                }

但它删除了整个阻止而不是单独使用:(

感谢您的帮助和时间:)

4

3 回答 3

4
var tbody = document.DocumentNode.SelectSingleNode("//tbody");
tbody.ParentNode.RemoveChild(tbody, keepGrandChildren: true);

输出:

<table>

  <tr>    
    <td valign="bottom"></td>
    <td valign="bottom"></td>
    <td valign="bottom"></td></tr>
  <tr>    
    <td></td>
    <td></td>
    <td></td></tr>

</table>
于 2013-08-27T14:01:07.943 回答
1

内部 html 是标签的组成部分,这就是内部 html 也被删除的原因。

您需要做的是用<tbody>的内部 html 替换标签<tbody>,在您的情况下,类似这样的内容(我没有检查此代码是否有效,但您明白了):

document.DocumentNode.SelectSingleNode("//table").innerHTML = document.DocumentNode.SelectSingleNode("//tbody").innerHTML;
于 2013-08-27T14:03:05.040 回答
0

如果你给你的标签一个 id,你应该能够通过 id 访问元素。这将使它超级容易删除。

于 2013-08-27T14:23:09.347 回答