2011-01-18 18 views
15

मुझे उत्पन्न .xml और .wsdl फ़ाइलों वाली बड़ी निर्देशिका संरचनाओं को अलग करने की आवश्यकता है। जनरेटेड .xml फ़ाइलें उस क्रम में भिन्न होती हैं जो बच्चे तत्व प्रकट होते हैं। XmlUnit Diff.similar() विधि इस मामले को संभालने के लिए माना जाता है:क्या XmlUnit के लिए कोई विकल्प हैं?

'दो दस्तावेज़ों को "समान" माना जाता है यदि उनमें ऑर्डर के बावजूद समान तत्व और गुण होते हैं।'

हालांकि यह मामला नहीं है। मैंने एक .xml फ़ाइल ली, दो बाल तत्वों के क्रम को उलट दिया और XmlUnit का कहना है कि वे समान नहीं हैं।

XmlUnit टूटा हुआ है, अंतर्निहित diff उपयोगिता से अधिक कार्यक्षमता प्रदान नहीं करता है।

क्या XmlUnit का कोई विकल्प है जो बाल तत्वों के क्रम में .xml फ़ाइलों में साधारण अंतर को पहचानता है?

+6

अगर आप चाहते हैं:

http://www.infoq.com/articles/xml-unit-test

मेरे मामले में, यह सिर्फ तत्व क्वालीफायर अधिभावी हल किया गया था आपकी पोस्ट को संपादित करने के लिए आपको अपनी पोस्ट संपादित करने की आवश्यकता है (ए) आपका कोड दिखा रहा है कि आपने 'डिफ' को तुरंत कैसे चालू किया और 'Diff.similar() ', और (बी) एक्सएमएल का न्यूनतम उदाहरण जो दर्शाता है कि आप गलत आउटपुट के रूप में क्या समझते हैं। –

उत्तर

1

मैं जिम की टिप्पणी से सहमत हूं। XmlUnit के साथ सामना करने वाले अधिकांश मुद्दों को गलत प्रारंभिकरण के कारण था।

हालांकि, आप हमेशा XMLUnit स्रोत कोड पर एक नज़र डाल सकते हैं और डिफ हैंडलर को अपने आप से बदल सकते हैं यदि आपको लगता है कि कार्यान्वयन आपको जो चाहिए वह नहीं कर रहा है। कोड समझने में काफी आसान है और आप अपने स्वयं के diff इंजन को लागू करने के लिए आवश्यक प्रयास किए बिना व्यवहार को पूरी तरह से नियंत्रित करने में सक्षम होंगे।

3

मुझे पता चला है कि निम्न विकल्प सेट गलत (अन) समानता की समस्या हल हो:

XMLUnit.setIgnoreWhitespace(true); 
+3

यह XMLUnit के साथ मेरे मुख्य मुद्दों में से एक है, स्थैतिक सेटअप जिससे एक दूसरे को प्रभावित किया जा सकता है। मैं इन कॉल को डिफ ऑब्जेक्ट पर देखना चाहूंगा। – Somatik

1

यह, एक्सएमएल सॉर्ट करने के लिए बेहतर है xmlunit से तुलना करने की बजाय xmlunit का उपयोग कर क्रमित अपने स्वयं के बारे में पहले , आपकी आवश्यकताओं के लिए xmlunit को कॉन्फ़िगर करने से यह बहुत आसान होगा

5

मुझे एक ही समस्या है, मेरे मामले में, मेरे पास एक ही नाम के साथ कई टैग थे, लेकिन अलग-अलग गुण (ऑर्डर कोई फर्क नहीं पड़ता), लेकिन XmlUnit हमेशा पहले के साथ पहली बार चेक किया गया, दूसरे के साथ दूसरा ... जिसे बदला जा सकता है। मेरा प्रश्न था:

Comparing similar xml files with XmlUnit with unordered tags (same tag name with different attributes)

मैं एक समाधान मिला:

Diff diff = new Diff(controlXml, responseXml); 
    diff.overrideElementQualifier(new ElementNameAndAttributeQualifier()); 
संबंधित मुद्दे