सं XmlDocument Equals()
विधि हां, तो यह तथ्य सिर्फ संदर्भ समानता प्रदर्शन में है के व्यवहार हावी नहीं होता।
यदि आप किसी दस्तावेज़ के सामग्रियों (विशेषताओं, तत्वों, कार्यों, पीआई, आदि) की तुलना करना चाहते हैं तो आपको उस तर्क को स्वयं लागू करना होगा।चेतावनी दी: यह मामूली नहीं है।
अपने सटीक परिदृश्य के आधार पर, आप दस्तावेज़ से सभी गैर-आवश्यक व्हाइटस्पेस को हटा सकते हैं (जो स्वयं मुश्किल हो सकता है) और वे परिणामस्वरूप XML पाठ की तुलना करते हैं। यह सही नहीं है - यह उन दस्तावेजों के लिए विफल रहता है जो अर्थात् समान हैं, लेकिन नामों का उपयोग कैसे किया जाता है और घोषित किया जाता है, या कुछ मूल्यों से बच निकले हैं या नहीं, तत्वों का क्रम, आदि। जैसा कि मैंने पहले कहा था, एक्सएमएल तुलना तुच्छ नहीं है।
आपको स्पष्ट रूप से परिभाषित करने की आवश्यकता है कि दो एक्सएमएल दस्तावेज़ों के लिए इसका अर्थ क्या है "समान" होना। क्या तत्व या विशेषता आदेश देने का मामला है? क्या मामला (पाठ नोड्स में) मायने रखता है? क्या आपको अनावश्यक सीडीएटीए अनुभागों को अनदेखा करना चाहिए? प्रसंस्करण निर्देश गिनती है? आंशिक रूप से योग्य नामस्थान बनाम पूरी तरह से योग्यता के बारे में क्या?
किसी भी सामान्य उद्देश्य कार्यान्वयन में, आप संभवतः दोनों दस्तावेजों को कुछ कैनोलिक रूप में बदलना चाहते हैं (चाहे यह एक्सएमएल या कुछ अन्य प्रतिनिधित्व हो) और फिर कैनोलिकीकृत सामग्री की तुलना करें।
उपकरण पहले से ही मौजूद है कि XML differencing करते हैं, Microsoft XML Diff/Patch, आप लाभ उठाने के लिए है कि दो दस्तावेज़ों के बीच मतभेद की पहचान करने में सक्षम हो सकता है। मेरे ज्ञान के लिए कि उपकरण स्रोत रूप में वितरित नहीं किया गया है ... इसलिए इसे एक एम्बेडेड एप्लिकेशन में उपयोग करने के लिए आपको प्रक्रिया को स्क्रिप्ट करने की आवश्यकता होगी (यदि आप इसका उपयोग करने की योजना बना रहे हैं, तो आपको पहले यह सत्यापित करना चाहिए कि लाइसेंसिंग शब्द इसका उपयोग और पुनर्वितरण की अनुमति देते हैं)।
संपादित करें:चेक बाहर @Max Toro's answer आप, .NET 3.5 एसपी 1 उपयोग कर रहे हैं जाहिरा तौर पर XLinq में एक विकल्प है कि सहायक हो सकता है वहाँ के रूप में। यह जानना अच्छा है कि यह मौजूद है।
इसके बारे में नहीं पता था, धन्यवाद। –
बहुत अच्छा। मुझे यह अस्तित्व में नहीं पता था। ऐसा लगता है कि यह कई मामलों को संभालता है जो मैं वर्णन करता हूं। – LBushkin
नाइस - इसका मतलब है कि मुझे यह करने के लिए एक तीसरी पार्टी लाइब्रेरी आयात करने की आवश्यकता नहीं थी! –