2013-07-01 10 views
5

मैंने एक्सएमएल फाइलों के साथ इतना काम नहीं किया है। लेकिन अब मैं एक ऐप लिख रहा हूं जो एक्सएमएल प्रारूप में अपना डेटा बचाता है।सभी संग्रहों को एक्सएमएल दस्तावेज़ों में एक अलग रूट नोड देने का कोई लाभ?

अब तक, मैं निम्नलिखित बुनियादी संरचना के साथ आया हूं।

<?xml version="1.0" encoding="utf-8"?> 
<categories> 
    <category id="cf6cb6bc-8142-4366-9b43-0ae6fce90df2"> 
    <subcategories> 
     <subcategory id="02b95e55-a4f7-4979-b0aa-a97f2c3327b0"> 
     <articles> 
      <article ... /> 
      <article ... /> 
     </articles> 
     </subcategory> 
     <subcategory id="5e9f9ef7-5190-4bcd-ab98-935d9208a4c7"> 
     <articles> 
      <article ... /> 
      <article ... /> 
     </articles> 
     </subcategory> 
     <subcategory id="7077d614-d3de-42d3-851a-b8c9ce0f56df"> 
     <articles> 
      <article ... /> 
      <article ... /> 
     </articles> 
     </subcategory> 
    </subcategories> 
    </category> 
</categories> 

लेकिन यह देखने के बाद, ऐसा लगता है कि कुछ अनावश्यक तत्वों यहाँ हैं, और एक ही डेटा निम्न के लिए छोटा किया जा सकता है कि जैसे:

<?xml version="1.0" encoding="utf-8"?> 
<categories> 
    <category id="cf6cb6bc-8142-4366-9b43-0ae6fce90df2"> 
    <subcategory id="02b95e55-a4f7-4979-b0aa-a97f2c3327b0"> 
     <article ... /> 
     <article ... /> 
    </subcategory> 
    <subcategory id="5e9f9ef7-5190-4bcd-ab98-935d9208a4c7"> 
     <article ... /> 
     <article ... /> 
    </subcategory> 
    <subcategory id="7077d614-d3de-42d3-851a-b8c9ce0f56df"> 
     <article ... /> 
     <article ... /> 
    </subcategory> 
    </category> 
</categories> 

यह फ़ाइल लगता है के रूप में एक पूरी की आवश्यकता है एक रूट नोड। हालांकि, यह सभी उपश्रेणियों को प्रकट नहीं करता है और लेखों को समर्पित रूट नोड्स की भी आवश्यकता होती है। तो मेरा छोटा संस्करण सिर्फ श्रेणी टैग के तहत सभी उपश्रेणियों को डंप करता है, और सभी लेख सीधे उपश्रेणी टैग के नीचे।

कोई भी जो XML फ़ाइलों के साथ अधिक काम करता है, मुझे बता सकता है कि ऊपर दिए गए संक्षिप्त संस्करण का उपयोग न करने का कोई कारण नहीं है।

+2

जब तक आपका दस्तावेज़ मान्य XML दस्तावेज़ है, मुझे नहीं लगता कि आपको 'समर्पित रूट नोड्स' की आवश्यकता है। एक्सएमएल दस्तावेज पहले से ही वर्बोज़ हैं, इसलिए जितना संभव हो उतना छोटा रखना बेहतर होना चाहिए। – vee

+0

न तो मैं करता हूं। लेकिन मुझे बस आश्चर्य हुआ कि क्या उन्हें नहीं होने का कोई नुकसान हुआ है। –

+2

एकमात्र नुकसान यह है कि ' 'नोड्स के पास आपके संक्षिप्त नमूने में' 'नोड्स के समान स्तर पर अन्य सामान थे। फिर यह सभी उपश्रेणियों को अपने '<उपश्रेणियों>' नोड के तहत समूहित करने के लिए उपयोगी हो सकता है। –

उत्तर

2

मैं अतिरिक्त पदानुक्रम रखने का कोई कारण नहीं देख सकता, अगर प्रति माता-पिता नोड में केवल एक ही है और उनके पास कोई विशेष विशेषता या विशेष डेटा नहीं है। मेरे पास subcategory सीधे category और article के तहत सीधे subcategory के तहत होगा। मैं व्यक्तिगत रूप से चीजों को साफ और सरल रखना चाहता हूं :)

संपादित करें: यदि आप उस स्तर पर अन्य डेटा रखते हैं, तो आपके पास उस डेटा पर अन्य डेटा था, जो आपके उदाहरण से ऐसा नहीं लगता है, फिर उन्हें एक के तहत समूहित करना नोड का फायदा होगा।

0

कभी-कभी सटीक डेटा मॉडलिंग अतिरिक्त स्तर की मांग करता है। उदाहरण के लिए यदि आप लेखों पर लागू होने वाली तिथियों की सीमा को इंगित करने के लिए "लेख" पर विशेषताओं को चाहते हैं, तो उपश्रेणी तत्व के इन गुणों को बनाने के लिए अनुचित हो सकता है, खासकर अगर उपश्रेणी में अलग-अलग विशेषताओं वाले लेख या पुस्तकें हो सकती हैं प्रत्येक मामला।

कंटेनर या संग्रह के लिए रैपर तत्व प्रोग्रामिंग को भी आसान बना सकते हैं यदि कंटेनर के पास एक अलग प्रकार के भाई बहन हैं: उदाहरण के लिए यदि किसी पुस्तक में शीर्षक, प्रकाशक और कई लेखकों हैं, तो लेखकों को कंटेनर तत्व में लपेटें चीजों को स्पष्ट कर सकते हैं।

लेकिन आम तौर पर मैं डेटा मॉडल में अव्यवस्था से बचने के लिए हूं; अतिरिक्त परतों से छुटकारा पाएं जो उपयोगी व्यावहारिक उद्देश्य प्रदान नहीं करते हैं।

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