حزمة رشاقة أتش تي أم أل إزالة الأطفال
-
22-07-2019 - |
سؤال
وأواجه صعوبة في محاولة لإزالة شعبة مع معرف معين، وأبنائها باستخدام HTML أجيليتي حزمة. وأنا على يقين من أنني أنا فقط المفقودين خيار التكوين، ولكن لها الجمعة وأنا أعاني.
وويمتد HTML مبسطة:
<html><head></head><body><div id='wrapper'><div id='functionBar'><div id='search'></div></div></div></body></html>
وهذا هو أقصى ما أنا قد حصلت. الخطأ القيت من قبل رشاقة حزمة يبين أنه لا يمكن العثور على هيكل شعبة:
<div id='functionBar'></div>
وهنا هو رمز حتى الآن (مأخوذة من ستاكوفيرفلوو ....)
HtmlAgilityPack.HtmlDocument htmlDoc = new HtmlAgilityPack.HtmlDocument();
// There are various options, set as needed
//htmlDoc.OptionFixNestedTags = true;
// filePath is a path to a file containing the html
htmlDoc.LoadHtml(Html);
string output = string.Empty;
// ParseErrors is an ArrayList containing any errors from the Load statement
if (htmlDoc.ParseErrors != null && htmlDoc.ParseErrors.Count > 0)
{
// Handle any parse errors as required
}
else
{
if (htmlDoc.DocumentNode != null)
{
HtmlAgilityPack.HtmlNode bodyNode = htmlDoc.DocumentNode.SelectSingleNode("//body");
if (bodyNode != null)
{
HtmlAgilityPack.HtmlNode functionBarNode = bodyNode.SelectSingleNode ("//div[@id='functionBar']");
bodyNode.RemoveChild(functionBarNode,false);
output = bodyNode.InnerHtml;
}
}
}
المحلول
<اقتباس فقرة>
وbodyNode.RemoveChild (functionBarNode، كاذبة)؛
اقتباس فقرة>ولكن functionBarNode ليس الطفل من bodyNode.
وماذا عن functionBarNode.ParentNode.RemoveChild(functionBarNode, false)
؟ (وننسى قليلا عن إيجاد bodyNode).
نصائح أخرى
ويمكنك ببساطة الاتصال على:
var documentNode = document.DocumentNode;
var functionBarNode = documentNode.SelectSingleNode("//div[@id='functionBar']");
functionBarNode.Remove();
ومن أبسط من ذلك بكثير، ويفعل نفس الشيء على النحو التالي:
functionBarNode.ParentNode.RemoveChild(functionBarNode, false);
وهذا العمل لعدة:
HtmlDocument d = this.Download(string.Format(validatorUrl, Url));
foreach (var toGo in QuerySelectorAll(d.DocumentNode, "p[class=helpwanted]").ToList())
{
toGo.Remove();
}
لا تنتمي إلى StackOverflow