संरक्षित करती है मैं एक जावा प्रोग्राम लिख रहा हूं जो एक एक्सएमएल फ़ाइल पढ़ता है, कुछ संशोधन करता है, और एक्सएमएल वापस लिखता है।जावा एक्सएमएल लाइब्रेरी जो विशेषता ऑर्डर
मानक जावा एक्सएमएल डोम एपीआई का उपयोग करके, गुणों का क्रम संरक्षित नहीं है। है कि, अगर मैं इस तरह के रूप में एक इनपुट फ़ाइल है:
<person last_name="lederrey" first_name="john"/>
यह सही है, क्योंकि XML विवरण कहना है कि आदेश विशेषता महत्वपूर्ण नहीं है:
<person first_name="john" last_name="lederrey"/>
मैं के रूप में कोई आउटपुट फ़ाइल मिल सकता है।
हालांकि, मेरे प्रोग्राम को विशेषताओं, के क्रम को संरक्षित करने की आवश्यकता है ताकि कोई व्यक्ति आसानी से इनपुट और आउटपुट दस्तावेज़ को एक diff टूल से तुलना कर सके। Order of XML attributes after DOM processing
हालांकि, इस, मेरे मामले के लिए काम नहीं करता है क्योंकि परिवर्तन मैं एक नोड में क्या करने की जरूरत निर्भर कर सकते हैं:
एक यह है कि के लिए समाधान SAX (डोम के बजाय) के साथ दस्तावेज़ पर कार्रवाई करने के लिए है पूरे दस्तावेज़ पर एक XPATH अभिव्यक्ति पर। तो, सबसे सरल बात यह है कि एक्सएमएल लाइब्रेरी मानक जावा डॉम लिब के समान ही होगी, अपवाद के साथ कि यह प्रेसेवर गुण ऑर्डर देता है।
क्या ऐसी कोई पुस्तकालय है?
ps: कृपया, इस बात पर चर्चा से बचें कि मुझे विशेषता आदेश सुरक्षित रखना चाहिए या नहीं। यह एक बहुत ही रोचक चर्चा है, लेकिन यह इस सवाल का मुद्दा नहीं है।
क्या आप डोम को यादृच्छिक विशेषता आदेश देते हैं यदि आप इनपुट को उसी तरह जोड़ते हैं (पाठ्यक्रम के मूल्यों को छोड़कर)? यह आपको वह आदेश नहीं दे सकता है जो आप चाहते हैं, लेकिन यह अजीब होगा अगर यह आपको एक यादृच्छिक आदेश देता है। मेरा मतलब है कि आदेश निर्दिष्ट नहीं किया जा सकता है, लेकिन इसमें कुछ तर्क होगा ... –
मुझे लगता है कि शायद कोई पुस्तकालय नहीं है जो आपको आपके स्रोत XML फ़ाइल में विशेषताओं का क्रम बताता है। हालांकि, आप आउटपुट को नियंत्रित करने पर विचार कर सकते हैं, ताकि आप लिखित विशेषताओं को हमेशा एक ही परिभाषित क्रम में बना सकें (उदाहरण के लिए नाम से क्रमबद्ध)। – obecker
@obecker, मेरे पास इनपुट xml फ़ाइल पर नियंत्रण नहीं है, इसलिए इनपुट xml पर विशेषताओं का क्रम अज्ञात है, और मैं ऑर्डर को मजबूर नहीं कर सकता। –