번호 노드와 그 값을 집에서 어떻게 제거합니까?
문서 :
<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"));
및이 다른 조합을 "컬렉션에서 노드를 찾을 수 없습니다"또는 아무것도 실행됩니다. 집 태그 안의 숫자가 아니라 맨 위 숫자를 선택합니다.
노드를 직접 제거하지 않는 이유는 무엇입니까?
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