2010-10-23 23 views
6

मैं कुछ एचटीएमएल (संभवतः एम्बेडेड जावास्क्रिप्ट कोड के साथ) को साफ करने के लिए वास्तव में एक आसान तरीका ढूंढ रहा हूं। मैंने twodifferentHTML Tidy .NET बंदरगाहों और दोनों अपवाद फेंक रहे हैं ...सी # एचटीएमएल टिडी का संस्करण?

क्षमा करें, "साफ" से मेरा मतलब "इंडेंट" है। एचटीएमएल बिल्कुल खराब नहीं है। यह XHTML सख्त है।


मैं अंत में कुछ SGML के साथ काम मिल गया , लेकिन इस गंभीरता से कभी कुछ HTML इंडेंट करने के लिए कोड का सबसे हास्यास्पद हिस्सा है।

private static string FormatHtml(string input) 
{ 
    var sgml = new SgmlReader {DocType = "HTML", InputStream = new StringReader(input)}; 
    using (var sw = new StringWriter()) 
    using (var xw = new XmlTextWriter(sw) { Indentation = 2, Formatting = Formatting.Indented }) 
    { 
     sgml.Read(); 
     while (!sgml.EOF) 
      xw.WriteNode(sgml, true); 
    } 
    return sw.ToString(); 
} 
+0

तो आप बस अपने स्रोत कोड को पुनः फ़ॉर्मेट करना चाहते हैं? आप इसके लिए किसी भी वेब-आइडिया या नोटपैड ++ का उपयोग कर सकते हैं। –

+0

@ निक: मुझे एहसास है, लेकिन मैं * पहले से ही एचटीएमएल फाइलों को सुधारने की कोशिश नहीं कर रहा हूं .. मैं एचटीएमएल को दोबारा सुधारने की कोशिश कर रहा हूं कि मैं एक सी # ऐप में उत्पन्न कर रहा हूं ... – mpen

+0

एचटीएमएलटेक्स्टवाइटर की जांच करें, मैंने अपना अपडेट किया उत्तर –

उत्तर

8

एचटीएमएल टिडी के लिए नवीनतम सी # रैपर मार्क बीटन द्वारा किया गया था, जो आपके द्वारा संदर्भित लिंक (2003) की तुलना में अधिक अद्यतित लगता है। यह भी ध्यान देने योग्य है कि मार्क आधिकारिक साइट से खींचने के बजाय, संदर्भ के लिए निष्पादन योग्य भी प्रदान करता है। यह आपके HTML को अच्छी तरह व्यवस्थित करने और मान्य करने की चाल करना चाहिए।

+2

बिल्ड सिर्फ टिडिलिब के लिए हैं, सी # रैपर नहीं। आपको स्रोत से भी TidyManaged बनाने की आवश्यकता होगी। मैं 64-बिट मशीन चला रहा हूं, लेकिन किसी भी कारण से केवल 32-बिट टिडिलिब डीएल काम करता है। मुझे इसे सी:/विंडोज/सिस्टम में रखना पड़ा। इसके अलावा, उदाहरण बीटॉन प्रदान करता है जो आपके एचटीएमएल को इंडेंट नहीं करेगा - केवल एक चीज जो मैं चाहता था - आपको 'doc.IndentBlockElements = AutoBool.Auto'' को जोड़ने की आवश्यकता है ... पता लगाने के लिए थोड़ा मुश्किल है। – mpen

+0

सहमत हुए, मैं x64 पर जाने के बाद बदले में आ गया हूं और टिडिलिब एक अपवाद फेंक रहा है "BadImageFormatException हुआ - गलत प्रोग्राम के साथ प्रोग्राम लोड करने का प्रयास किया गया। (HRESULT: 0x8007000B से अपवाद)"। TidyManaged https: // github पर एक बग पोस्ट किया गया।com/markbeaton/tidyManaged/issues/3 – wonea

+0

मैंने विंडोज 7 64 बिट पर इस परियोजना को x86 पर कॉन्फ़िगरेशन मैनेजर में TIDyManaged प्रोजेक्ट और मेरे प्रोजेक्ट को संदर्भित करके इसे संदर्भित करने में कामयाब रहा है, जो इसका संदर्भ देता है और 32 बिट संस्करण का उपयोग करता है libtidy.dll। – ChrisR

3

अद्यतन:

चेक HtmlTextWriter या XhtmlTextWriter उपयोग: Formatting Html Output with HtmlTextWriter, हो सकता है HTML construction via HtmlTextWriter बेहतर होगा?

यह भी जांच: LINQ & Lambda, Part 3: Html Agility Pack to LINQ to XML Converter

http://www.manoli.net/csharpformat/, यहाँ source code आप इसे याद आती है मामले में।


शायद आप इसे स्वयं करना चाहते हैं? यह प्रोजेक्ट सहायक हो सकता है: Html Agility Pack

वास्तव में एचटीएमएल एजिलिटी पैक (एचएपी) क्या है?

यह एक चुस्त HTML पार्सर है जो एक पढ़ने/लिखने वाला डीओएम बनाता है और सादा XPATH या XSLT का समर्थन करता है (आपको वास्तव में इसका उपयोग करने के लिए XPATH और XSLT को समझने की आवश्यकता नहीं है, चिंता न करें ...)। यह एक .NET कोड लाइब्रेरी है जो आपको "वेब से बाहर" HTML फ़ाइलों का विश्लेषण करने की अनुमति देती है। पार्सर "असली दुनिया" विकृत HTML के साथ बहुत सहिष्णु है। ऑब्जेक्ट मॉडल System.Xml का प्रस्ताव करने के समान ही है, लेकिन HTML दस्तावेज़ों (या स्ट्रीम) के लिए।

एचटीएमएल एजिलिटी पैक अब ऑब्जेक्ट्स के लिए लिंक का समर्थन करता है (एक LINQ से Xml इंटरफ़ेस की तरह)। इस सुविधा के साथ

नमूना अनुप्रयोगों खेलने के लिए नया बीटा की जाँच करें:

  • पृष्ठ फिक्सिंग या पीढ़ी। आप किसी पृष्ठ को जिस तरह से चाहते हैं उसे ठीक कर सकते हैं, डीओएम संशोधित करें, नोड्स जोड़ें, कॉपी नोड्स, अच्छी तरह से ... आप इसे नाम दें।

  • वेब स्कैनर्स। आप आसानी से img/src या ए/hrefs को एक गुच्छा XPATH क्वेरी के साथ प्राप्त कर सकते हैं।

  • वेब स्क्रैपर्स। आप किसी भी मौजूदा वेब पेज को आरएसएस फ़ीड में आसानी से स्क्रैप कर सकते हैं उदाहरण के लिए, केवल XSLT फ़ाइल बाध्यकारी के रूप में कार्यरत है। इसका उदाहरण प्रदान किया गया है।


इसके अलावा, आप इस कार्यान्वयन की कोशिश कर सकते हैं: A managed wrapper for the HTML Tidy library

+0

मैंने सुना है और पहले से ही HTMLAgilityPack का उपयोग किया है .. लेकिन क्या यह HTML को साफ कर सकता है? – mpen

+0

एचएपी टिडी के प्रतिस्थापन नहीं है बल्कि यह आपके लिए डीओएम बना सकता है और आप इसके अनुसार इसे संसाधित कर सकते हैं। इसके अलावा मुझे यकीन नहीं है कि यह विकृत HTML को पार्स करने के लिए पर्याप्त स्मार्ट है (यदि आपको कुछ अजीब प्रक्रिया करना है)। बीटीडब्लू, क्या आप "साफ" से थोड़ा सा बेहतर परिभाषित कर सकते हैं, कौन से नियम लागू किए जाने हैं? इसके अलावा आप मूल HTML Tidy (http://bit.ly/aahXs8) का उपयोग बिना रैपर पर भरोसा किए बिना कर सकते हैं यदि आपको केवल कुछ फ़ाइलों को नियमित आधार पर साफ करने की आवश्यकता है। –

+1

मुझे डोम को संसाधित करने की आवश्यकता नहीं है, मैं बस इसे इंडेंट करना चाहता हूं। मैं विशेष रूप से एक सी # संस्करण चाहता हूं क्योंकि मुझे इसे अपने सी # प्रोजेक्ट में उपयोग करने की आवश्यकता है। मैं कुछ HTML को एक स्ट्रिंग के रूप में उत्पन्न कर रहा हूं, मैं उस स्ट्रिंग को लेना चाहता हूं, इसे इंडेंट किया है, और एक और स्ट्रिंग आउटपुट करना चाहता हूं। न आधिक न कम। सोचा कि ऐसा करने के लिए लाइब्रेरी ढूंढना आसान होगा। – mpen

1

मैं SGML Reader का उपयोग किया है अतीत में एक्सएचटीएमएल करने के लिए HTML कन्वर्ट करने के लिए। देख सकते हैं ...

जब मैं इसका उपयोग कर रहा था तब मुझे कभी भी कोई समस्या नहीं थी।

+1

मैंने इसे देखा। मैं यह नहीं समझ सकता कि स्ट्रिंग को वापस कैसे प्राप्त करें ... – mpen

+2

इस लिंक पर एक नज़र डालें: http://www.eggheadcafe.com/articles/20030317.asp –

+0

कुछ HTML प्रारूपित करने के लिए थोड़ा हास्यास्पद है, लेकिन यह करता है काम। धन्यवाद :) – mpen

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