CsQuery पर देखो (मैं कर रहा हूँ जो प्राथमिक लेखक) एचटीएमएल में हेरफेर करने के लिए एक उपकरण के रूप में।
यह एक .NET jQuery पोर्ट है, यह आपको क्लाइंट (एक डोम और jQuery की एपीआई) पर उपयोग की जाने वाली विधियों के माध्यम से HTML तक पूर्ण पहुंच प्रदान करता है। यह आपके स्वयं के sanitizer रोल करने के लिए बहुत आसान बनाता है।
रिक स्ट्राल में हाल ही में एचटीएमएल को स्वच्छ करने के बारे में blog post था। उन्होंने दिखाया कि एचटीएमएल एजिलिटी पैक का उपयोग करके अपने नियमों के साथ इसे कैसे किया जाए, मैंने एक टिप्पणी पोस्ट की जिसमें दिखाया गया कि सीएसQuery के साथ एक ही चीज़ को आसानी से कैसे प्राप्त किया जाए।
CQ doc = CQ.Create(html);
// creates a grouped selector "iframe,form,script, ..."
string selector = String.Join(",",BlackList);
// CsQuery uses the property indexer as a default method, it's identical
// to the "Select" method and functions like $(...)
doc[selector].Remove();
आप वास्तव में कुछ टैग में सामग्री को नहीं करना चाहते हैं, उदाहरण के लिए: मूल बातें सिर्फ इस, टैग के गणन BlackList
दिया जाता है शायद उन टैग्स को स्वरूपित करना जिन्हें आप प्रतिबंधित करना चाहते हैं, आप इसके बजाय jQuery के अनचाहे का उपयोग कर सकते हैं। इसका एक टैग हटाने का प्रभाव होगा लेकिन अपने बच्चों को संरक्षित करेगा।
doc[selector].UnWrap();
जब आप पूरा कर:
string cleanHtml = doc.Render();
वहाँ जावास्क्रिप्ट घटना विशेषताओं की सफाई के लिए रिक्स 'पोस्ट में अधिक है और इतने पर, लेकिन मूल रूप से CsQuery हेरफेर करने के लिए एक परिचित और आसान तरीका के साथ एक टूलबॉक्स है एचटीएमएल। यह एक स्वच्छता बनाने के लिए काफी आसान होना चाहिए जो आपके इच्छित तरीके से काम करता है।
CsQuery के डोम मॉडल में शैलियों को सीधे एक्सेस करने के तरीकों (जैसे स्ट्रिंग में हेरफेर करने की तुलना में अधिक सुविधाजनक तरीके से) शामिल हैं, अगर आपको कुछ नामांकित शैलियों को हटाने की आवश्यकता है।उदाहरण के लिए आप सभी तत्वों से "font-weight" शैली को दूर कर सकते हैं:
// use the [attribute] selector to target only elements with styles
foreach (IDomObject element in doc["[style]"]) {
if (element.HasStyle("font-weight")) {
element.RemoveStyle("font-weight");
}
}
CsQuery के प्रमुख कमी अभी प्रलेखन है। यह एपीआई ब्राउज़र डीओएम और jQuery से जितना संभव हो सके मिलान करने के लिए डिज़ाइन किया गया है (jQuery और सी # के बीच दी गई भाषा भिन्नताएं), और सार्वजनिक एपीआई अच्छी तरह से टिप्पणी की जाती है, इसलिए इसे जाने के बाद कोड के लिए पर्याप्त आसान होना चाहिए।
लेकिन कुछ हद तक गैर-मानक विधियां हैं (जैसे "हैस्स्टाइल" और "निकालें स्टाइल") CsQuery के लिए अद्वितीय हैं। यद्यपि जीथ्यूब पर रीडेमे में मूल उपयोग बहुत अच्छी तरह से कवर किया गया है। यह Nuget पर CsQuery
के रूप में भी है।
[एचटीएमएल साफ] (http://tidy.sourceforge.net/) पर पुराना है, लेकिन मैं यह उपयोग किया है सफलता के साथ। – transistor1
मुझे यकीन नहीं है कि यह वही है जो मैं ढूंढ रहा हूं। यहां प्राथमिक लक्ष्य यह सुनिश्चित करना है कि उपयोगकर्ता इनपुट में निष्पादन योग्य स्क्रिप्ट शामिल न हों। एचटीएमएल टिडी अच्छा लग रहा है, लेकिन लगता है कि यह एक बहुत ही अलग उद्देश्य है। –