2009-04-30 17 views
5

में बनाना मैं इस समस्या को हल करने के लिए सबसे अच्छी विधि जानना चाहता हूं: मैं xml स्कीमा से एक खाली टेम्पलेट xml बनाना चाहता हूं। सभी आवश्यक तत्व और गुण बनाए जाएंगे और उनके मूल्य सभी खाली तार होंगे।xsd से xsd फ़ाइल को .NET

अगला चरण यह निर्धारित करने के लिए है कि कौन सा बच्चा xml नोड्स एक निश्चित नोड हो सकता है। जैसे। मैं एक नोड का चयन करता हूं जिसमें minOccurs = "0" है, maxOccurs = "unbounded" अपने बच्चों में से एक के लिए। मैं उस बच्चे, उसके गुणों, इसका नाम, इसके मूल्य प्रकार इत्यादि के बारे में सब कुछ निर्धारित करने में सक्षम होगा

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

यह .NET 2.0 के साथ सी # 2.0 में है।

संक्षेप में, मैं किस स्कीमा को स्कीमा पढ़ने के लिए उपयोग करता हूं और xml बनाने के लिए उपयोगी जानकारी प्राप्त करने के लिए इसका विश्लेषण करता हूं? मेरे नैतिकता में मुझे आशा थी कि चूंकि xsd स्वयं में एक्सएमएल था, इसलिए कुछ प्रकार का डोम मॉडल होगा जो मैं पार कर सकता था।

मैं इस चाहते हैं मेरे कार्यक्रम तक ही सीमित इसलिए इस तरह OxygenXml, वी.एस., xsd.exe, आदि के रूप में बाहरी उपकरण का कोई उपयोग नहीं

+1

संभावित डुप्लिकेट [क्या एनईटी में एक्सएसडी स्कीमा से नमूना एक्सएमएल दस्तावेज़ उत्पन्न करने के लिए कोई कक्षा है] (http://stackoverflow.com/questions/41674/is-there-a-class-to-generate-a -sample-xml-document-from-xsd-schema-in-net) –

उत्तर

1

ऐसा लगता है कि आप जो करना चाहते हैं वह सबसे अच्छा एक्सएमएल संपादकों में एक्सएमएल इंटेलिजेंस के पीछे कार्यक्षमता को दोहराया गया है। यानी एक एक्सएमएल स्कीमा पढ़ें और काम करें कि कौन से तत्व और गुण आगे आ सकते हैं।

हमने कुछ समय पहले एक परियोजना पर कुछ ऐसा ही किया है जिसे हमने कुछ समय पहले काम किया था। कुछ समय जो काम करता है, वह बहुत काम करता है, उत्पाद के लिए जो कुछ भी काम करता है वह काम का भार है!

असल में आपको एक्सएसडी लोड करने की आवश्यकता है (.net में XmlSchema ऑब्जेक्ट्स आपको ऐसा करने की अनुमति देता है)। लेकिन एसओएम ऑब्जेक्ट मॉडल का खुलासा बहुत कच्चा है, इसलिए आपको इसकी व्याख्या करने के लिए काफी काम करना होगा। यदि आप प्रतिस्थापन समूहों, जटिल टाइप एक्सटेंशन, गिरगिट स्कीमा और नेमस्पेस जैसी अवधारणाओं को अनदेखा करते हैं, तो आप आसानी से एसओएम नेविगेट करने में सक्षम होना चाहिए।

आपको अगली बार यह पता लगाने की आवश्यकता है कि आप अपनी स्कीमा के संबंध में XML दस्तावेज़ में कहां हैं। एक बार जब आप जानते थे कि आप एसओएम में हैं तो आप उपलब्ध विकल्पों को पूरा करना शुरू कर सकते हैं।

ऐसा करने के लिए कोड की लाइनों और 4-12 व्यक्ति सप्ताह के काम ठीक से करने के लिए है। आप कुछ हफ्तों में कुछ बुनियादी मिल सकते हैं?

+0

हाँ, यही वह है जिसे मैं खोज रहा हूं क्योंकि मैंने इस पर काम करना शुरू किया था। इसके लिए एक पुस्तकालय बनाने के लिए वास्तव में कई घंटे लगेंगे। मैंने XmlSchema ऑब्जेक्ट के माध्यम से ट्रैवर्सिंग और इस समय आवश्यक जानकारी को चुनने और खींचने के लिए इस्तीफा दे दिया है। – ipwnponies

0

आप इस तरह के XMLSpy (link) के रूप में एक तीसरी पार्टी उपकरण का उपयोग कर सकते हैं। यह xsd या इसके विपरीत से एक डमी एक्सएमएल बना देगा।

:

वास्तव में एक गोल चक्कर (लेकिन मुक्त) जिस तरह से आप नेट उपकरण है कि आपकी मशीन पर मौजूद के साथ कर सकता xsd.exe (link) का उपयोग करने इकाई वस्तुओं है कि अपने स्कीमा का उपयोग कर परिभाषित करता है निम्नलिखित उत्पन्न करने के लिए किया जाएगा

xsd /classes /language:CS XSDSchemaFile.xsd 

तब जब आपके पास ऑब्जेक्ट होते हैं, तो उन्हें एक प्रोजेक्ट में लोड करें और उन्हें क्रमबद्ध करें। आप गुणों को पॉप्युलेट कर सकते हैं और ऐसे में यदि आप कुछ डमी डेटा जोड़ना चाहते हैं।

+0

इसे इंगित करने के लिए खेद है, मैं चाहता हूं कि यह पूरी तरह से मेरे प्रोग्राम के भीतर किया जाए। सबसे महत्वपूर्ण जानकारी जो मैं चाहता था वह एक विधि या वर्ग थी जो मुझे आवश्यक जानकारी के किसी भी टुकड़े के लिए स्कीमा को पार्स करने की अनुमति देगी। – ipwnponies

1

मैं एमएसडीएन दस्तावेज़ों के साथ अपनी आंखों को खून बह रहा हूं और मुझे लगता है कि मैंने एक सुगंध उठाई है। XmlSchema का उपयोग करके एक स्कीमा लोड करें। इसे पढ़ें और संकलित करें। तत्वों की संपत्ति में 'शीर्ष स्तर' तत्वों का संग्रह होगा। आपको मूल तत्व या कुछ के योग्य नाम को हार्डकोड करना होगा। तो वह यह है। मुझे अभी तक दिए गए स्कीमा तत्व के तहत 'सामग्री' को कैसे ढूंढना नहीं है।

संपादित करें: मुझे कुछ और पथ मिल गए हैं लेकिन यह अभी भी क्रिस्टल स्पष्ट नहीं है। XmlSchemaElements में स्कीमा प्रकार की संपत्ति है। यह या तो सरल या जटिल है। एक्सएमएल स्कीमा में जटिल प्रकारों में गुण, अनुक्रम, समूह इत्यादि हो सकते हैं। अनुक्रमों में कण नामक एक संपत्ति होती है जो एक तत्व हो सकती है। और चक्र दोहराता है। लेकिन मुझे लगता है कि कार्यान्वयन में कठिन हिस्सा यह सुनिश्चित करना होगा कि आप सभी संभावित मामलों (सरल प्रकार, विशेषता के साथ जटिल प्रकार, विशेषता प्रकार और तत्व, एक्सटेंशन, पूरे शेबांग के साथ जटिल प्रकार) को कवर करें।

संपादित करें: XmlSchemaElement प्राप्त करने के लिए XmlSchema ऑब्जेक्ट की एलिमेंट प्रॉपर्टी का उपयोग करें। सरल या जटिल प्रकार प्राप्त करने के लिए XmlSchemaElement की SchemaType प्रॉपर्टी का उपयोग करें। 'अनुक्रम'/'पसंद'/'सब' पाने के लिए 'सरल सामग्री'/'जटिल सामग्री' या कण प्राप्त करने के लिए गुण या सामग्री मॉडल प्राप्त करने के लिए XmlSchemaComplexType की विशेषता प्रॉपर्टी का उपयोग करें।मूल रूप से संपत्तियों की जांच करने और प्रकारों और कास्टिंग वस्तुओं की जांच करने के लिए बाएं और दाएं और xsd ऑब्जेक्ट्स की सभी संभावित व्यवस्थाओं की जांच करना। लाइब्रेरी बनाने के लिए लंबा और बोझिल और त्रुटि-प्रवण होगा। और यह एक्सएमएल स्कीमा के साथ है, डीटीएस के साथ मैं भी सोचना शुरू नहीं करना चाहता हूं। वाह, एक्सएमएल स्कीमा आवश्यक हैं लेकिन उन्हें इतना बुरा क्यों होना चाहिए।

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