2011-07-04 9 views
8

खोने के बिना एजिलिटी पैक का उपयोग करके HTML से टिप्पणियों को कैसे पट्टी करें I HTML से अनावश्यक सामग्री को निकालने का प्रयास कर रहा हूं। विशेष रूप से मैं टिप्पणियां हटाना चाहता हूं। मुझे एक बहुत अच्छा समाधान मिला (Grabbing meta-tags and comments using HTML Agility Pack) हालांकि DOCTYPE को एक टिप्पणी के रूप में माना जाता है और इसलिए टिप्पणियों के साथ हटा दिया जाता है। यह सुनिश्चित करने के लिए कि DOCTYPE संरक्षित है, मैं नीचे दिए गए कोड को कैसे सुधार सकता हूं?DOCTYPE

var htmlDoc = new HtmlDocument(); 
htmlDoc.LoadHtml(htmlContent); 
var nodes = htmlDoc.DocumentNode.SelectNodes("//comment()"); 
if (nodes != null) 
{ 
    foreach (HtmlNode comment in nodes) 
    { 
     comment.ParentNode.RemoveChild(comment); 
    } 
} 

उत्तर

8

चेक कि टिप्पणी DOCTYPE

foreach (var comment in nodes) 
    { 
    if (!comment.InnerText.StartsWith("DOCTYPE")) 
     comment.ParentNode.RemoveChild(comment); 
    } 
+0

से सभी टिप्पणियों बंद हटेगा साथ शुरू नहीं करता है कि सुरक्षित है? यदि कोई टिप्पणी है तो ? मुझे पता है कि यह एक बढ़िया मामला है, लेकिन मुझे लगता है कि मेरा मुद्दा यह है: टिप्पणी नोड की सामग्री की जांच करने के बजाय कोई बेहतर तरीका नहीं है? – desautelsj

+0

शायद इसे निष्क्रिय करें जब यह DOCTYPE से शुरू होता है और मूल तत्व का पहला बच्चा है? –

+0

मैंने कुछ परीक्षण किया और टिप्पणी की सामग्री को वास्तव में ' desautelsj

14
doc.DocumentNode.Descendants() 
.Where(n => n.NodeType == HtmlAgilityPack.HtmlNodeType.Comment) 
.ToList() 
.ForEach(n => n.Remove()); 

इस दस्तावेज़

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^