21

में वैकल्पिक, मैंने .NET 4 पर एक प्रोजेक्ट लिखा है और वर्तमान में इसे विंडोज फोन पर चलाने की अनुमति देने की प्रक्रिया में हूं। मैं HtmlAgilityPack का उपयोग कर रहा हूं, एक प्रसिद्ध लाइब्रेरी जो HTML पर लिंक क्वेरीज़ की अनुमति देती है, और केवल LoadHtml और लिंक इंटरफेस प्रदान करता है।एचटीएमएलएगिलिटीपैक के साथ एचटीएमएल लिंक, या पीसीएल

.NET 4 और WP8 के लिए समर्थन के साथ .NET 4 से पीसीएल (पोर्टेबल क्लास लाइब्रेरी) में कक्षा पुस्तकालयों को परिवर्तित करने के बाद, मैं अब HtmlAgilityPack लाइब्रेरी का उपयोग नहीं कर सकता। क्या एचटीएमएलएगिलिटीपैक को पीसीएल प्रोजेक्ट के तहत सही तरीके से काम करने की अनुमति देने का कोई तरीका है या क्या एक समान लिंक इंटरफेस के साथ एक परिवर्तनीय विकल्प है जो इरादे से काम करता है?

EDIT: HtmlAgilityPack 9 अलग-अलग संस्करण प्रदान करता है, जिनमें से कोई भी पीसीएल के साथ संगत नहीं है। उनमें से कोई भी संदर्भ से निर्भरताओं को हल नहीं करता है। कुछ संस्करणों के लिए, ऐसा लगता है कि यह करता है लेकिन उपयोग पर सामान्य 'लोड नहीं हो सकता, अनसुलझे निर्भरता' के साथ एक त्रुटि फेंक दी जाएगी।

EDIT # 2 चूंकि यह एक छोटी टिप्पणी को याद करना आसान है, इसलिए मैं इस समाधान को उस समाधान के साथ अपडेट करूंगा जिसके साथ मैं आया था। मैंने बुनियादी कार्यक्षमता के लिए आवश्यक चीज़ों को निकाला और सबकुछ काम करने के लिए गायब घटकों को लागू किया। नतीजा यहां है https://github.com/Deathspike/HtmlAgilityPack-PCL

+0

"मैं अब HtmlAgilityPack लाइब्रेरी का उपयोग नहीं कर सकता।" - आप ऐसा कैसे कहते हैं? क्या आपको कोई विशेष त्रुटि या संदेश मिल रहा है? –

+0

HtmlAgilityPack में 9 अलग-अलग संस्करण हैं और उनमें से कोई भी संदर्भों से निर्भरता को हल नहीं करता है।कुछ संस्करणों के लिए, ऐसा लगता है कि यह करता है लेकिन उपयोग पर सामान्य 'लोड नहीं हो सकता, अनसुलझे निर्भरता' के साथ एक त्रुटि फेंक दी जाएगी .. –

+0

कृपया इस जानकारी के साथ अपना प्रश्न अपडेट करें। –

उत्तर

4

आपने अपने प्रश्न पूछे और उत्तर दिया - है ना?

HtmlAgilityPack पोर्टेबल क्लास लाइब्रेरीज़ के साथ उपयोग का समर्थन नहीं करता है।

सबसे अच्छा आपको उस प्लेटफॉर्म पर काम करने वाली विशिष्ट कार्यक्षमता को पोर्टिंग/माइग्रेट करने की आवश्यकता होगी जो आप उपयोग कर रहे हैं।

+5

मैं HtmlAgilityPack के आधार पर एक कस्टम संस्करण बनाने के विकल्प की तलाश में था। रुचि रखने वालों के लिए, यह यहां https://github.com/Deathspike/HtmlAgilityPack-PCL उपलब्ध है। –

+3

और यह nuget पर है: https://www.nuget.org/packages/HtmlAgilityPack-PCL/ –

5

एक विकल्प एचटीएमएल एजिलिटी पैक स्रोत कोड को पीसीएल में बंद करना है। यह अनुमान लगाने के लिए कि आप कितना मुश्किल होंगे, PCL Compliance Analyzer चला सकते हैं।

वैकल्पिक रूप से, अमूर्त पैटर्न का उपयोग करें। आपको आवश्यक कार्यक्षमता के लिए एक पोर्टेबल इंटरफ़ेस बनाएं (यानी LoadHtml और Linq), और उसके बाद HTML प्लेटफ़ॉर्म पैक में कॉल करके प्रत्येक प्लेटफ़ॉर्म के लिए उस इंटरफ़ेस को कार्यान्वित करें। फिर आपका पोर्टेबल कोड मंच-विशिष्ट कार्यान्वयन पर निर्भर हो सकता है।

अधिक जानकारी के लिए इस ब्लॉग पोस्ट देखें: HtmlParserSharp पर How to Make Portable Class Libraries Work for You

3

देखो, इस validator.nu HTML5 parser की एक सी # बंदरगाह है। परियोजना को पीसीएल लाइब्रेरी के रूप में बनाना बहुत आसान होना चाहिए क्योंकि यह सी ++ पोर्ट में कम या कम है और सी # में प्रदर्शन को बेहतर बनाने के लिए कुछ अपडेट के साथ .NET फ्रेमवर्क क्लासेस का सबसे बुनियादी उपयोग करता है।

जबकि अधिकांश काम मैं HtmlParserSharp साथ किया है CsQuery के लिए किया गया है, जो अपने आप पीसीएल अनुरूप किया जा रहा से एक लंबा रास्ता है, वहाँ सब पर कोई कारण यह है कि HtmlParserSharp एक दुबला के रूप में यह के दम पर पूरी तरह से अच्छी तरह से काम would't है अपने उद्देश्यों के लिए एचटीएमएल पार्सर। इस परियोजना में XmlElement के आधार पर एक डोम बनाने का एक उदाहरण शामिल है, लेकिन पेड़ निर्माता एक अमूर्त है ताकि आप इसे आसानी से अपने पेड़ नोड ऑब्जेक्ट्स का उपयोग करने के लिए बदल सकें।

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