2013-08-27 47 views
1

我需要刪除HTML標籤說,在下面的代碼<tbody>如何使用HTMLAgilityPack單獨刪除html標籤,但不能刪除內部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(); 
       } 

但它只是單獨刪除整個塊,而不是:(

感謝您的幫助& time :)

+0

您無法從元素中刪除標籤!刪除元素將刪除標籤以及內容。那麼你想實現什麼?你知道,HTML中的表格確實需要它們的實體。通過將表格行直接放入表格中,您可以創建不合格的DOM樹。 –

回答

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

OUTPUT:

<table> 

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

</table> 
+0

如果此命令不可用,您將存儲父項,存儲子節點,刪除要刪除的節點,然後將子節點添加回已刪除節點的父節點。 – Grax

1

內部HTML是標籤的一個組成部分,這就是爲什麼內部HTML也越來越刪除。

什麼你需要做的是通過<tbody>內部HTML更換<tbody>標籤,在你的情況下,這樣的事情(我沒有檢查這個代碼的工作,但你的想法):

document.DocumentNode.SelectSingleNode("//table").innerHTML = document.DocumentNode.SelectSingleNode("//tbody").innerHTML; 
0

如果你給你的標籤一個ID,你應該能夠通過ID訪問元素。這將使它非常容易刪除。