如何从家中删除号码节点及其值?
文档:
<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"));
以及其他一些组合并运行到“未在集合中找到节点”或者什么都不会发生。它还会选择最顶层的数字,而不是房屋标签内的数字。
答案 0 :(得分: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