2012-07-19 38 views
1

如何從房子中刪除數字節點及其值?使用HtmlAgilityPack刪除HtmlNode中的HtmlNode

文獻

<number>123456</number> 
<house> <number> </number>Red</house> 
<house> <number>12</number>Blue</house> 
<number>345345</number> 
etc... 

代碼:

private void getHouse(string houseHtml) 
{ 
    HtmlAgilityPack.HtmlDocument htmlDoc = new HtmlAgilityPack.HtmlDocument(); 

    htmlDoc.Load(new System.IO.StringReader(houseHtml)); 

    foreach (HtmlAgilityPack.HtmlNode house in htmlDoc.DocumentNode.SelectNodes("//house")) 
    { 
     MessageBox.Show(house.InnerText); 
    } 
} 

結果:

Red 
12Blue 

所需的結果

Red 
Blue 

我一直在嘗試使用:

house.RemoveChild(house.SelectSingleNode("//number")); 

和這個其他一些組合到一個運行中的「節點集合中找不到」或者什麼也不會發生。它也將選擇最高的數字,而不是房屋標籤內的數字。

回答

1

爲什麼不直接刪除節點?

var numbers = htmlDoc.DocumentNode.SelectNodes("//house/number"); 
if (numbers != null) { 
    foreach(var node in number) 
     node.Remove(); 
} 

不管怎麼說,你的XPath是選擇所有節點的原因是因爲你需要給相對於當前節點的路徑:

house.SelectSingleNode("//number"); // wrong 
house.SelectSingleNode(".//number"); // right 
相關問題