2011-03-09 12 views
14

मैं वर्तमान में दो XML फ़ाइलों की तुलना करने के लिए XMLUnit लाइब्रेरी का उपयोग करने का प्रयास कर रहा हूं। उनमें से एक, उम्मीदवार, जावा ऑब्जेक्ट्स (जेएक्सबी का उपयोग करके) से मेरे कोड द्वारा उत्पन्न होता है और दूसरा संदर्भ (मैं इसे संशोधित नहीं कर सकता)। असल में मैं यह साबित करने की कोशिश कर रहा हूं कि एक संदर्भ XML फ़ाइल दिया गया है, मैं इसे रद्द कर सकता हूं (जैक्सबी और स्वयं के कुछ वर्गों का उपयोग करके) फिर इसे दूसरी फ़ाइल में क्रमबद्ध करें और फिर भी वही सामग्री हो।XMLUnit - तुलना में एक्सएमएल फ़ाइल इंडेंटेशन प्रभाव

लाइब्रेरी मुझे आवश्यक सेवाओं को प्रस्तुत करने लगती है लेकिन जब जेनरेट की गई फ़ाइल ठीक तरह से इंडेंट नहीं होती है (एक "सुंदर प्रिंट" संस्करण की तरह) तुलना विफल हो जाती है और ऐसा नहीं होता है जब इंडेंटेशन ठीक है। उदाहरण के लिए जब उम्मीदवार उत्पन्न होता है वहां कोई इंडेंटेशन नहीं होता है, तो सामग्री एक-लाइनर है, अगर कोई इंडेंट ठीक से (मैन्युअल रूप से) तुलना ठीक है।

[विभिन्न] बच्चे की अपेक्षित संख्या नोड्स '3' लेकिन था '1'

तुम लोगों को हल करने के किसी भी विचार है:

यहाँ XMLUnit द्वारा उत्पन्न त्रुटि संदेश है इस? शायद समाधान उम्मीदवार का एक सुंदर-प्रिंट संस्करण उत्पन्न करना है, इस मामले में क्या आपको JAXB serialiser के साथ गठबंधन करने का विचार है?

तरह से अगर आप अब जावा में एक बेहतर समाधान एक्सएमएल फाइल मैं यह पता करने में खुशी होगी की तुलना करने से;)

आपकी मदद के लिए अग्रिम धन्यवाद।

उत्तर

19

org.custommonkey.xmlunit.XMLUnit कक्षा पर गुणों को सेट करके पेड़ की तुलना करते समय आप XMLUnit द्वारा उपयोग की जाने वाली कुछ बाधाओं को आराम कर सकते हैं।

आपके मामले में, आप शायद चाहते हैं:

XMLUnit.setIgnoreComments(true); 
XMLUnit.setIgnoreWhitespace(true); 
XMLUnit.setIgnoreDiffBetweenTextAndCDATA(true); 

तुम भी setIgnoredAttributeOrder संपत्ति सहायक लग सकता है और साथ ही।

+0

बहुत बहुत धन्यवाद! यह मेरी समस्या हल हो गई। –

0

XMLUnit 2.x के साथ ऐसा करने के लिए, मेरे उत्तर here को इसी तरह के प्रश्न पर देखें।

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