2009-01-15 11 views
24

मुझे सी ++ एप्लिकेशन (जीयूआई के लिए क्यूटी फ्रेमवर्क का उपयोग करके) लिखना है जो xsd स्कीमा फ़ाइल द्वारा वर्णित एक्सएमएल फाइलों में संग्रहीत डेटा को संपादित कर सकता है। Xsd स्कीमा को C++ क्लासेस में कनवर्ट करने के लिए कोई उपकरण है?एक्सएमएल स्कीमा से सी ++ कक्षाएं

उत्तर

23

मुझे लगता है जैसे CodeSynthesis बिल्कुल वही है जो आप खोज रहे हैं। यह खुला स्रोत और सी ++ है।

+18

यह ध्यान देने योग्य है कि * ओपन सोर्स * थोड़ा मुश्किल है। * कोडसिंथेसिस * द्वारा उत्पन्न कोड भी जीपीएल लाइसेंस द्वारा कवर किया गया है, इसलिए आप अपने पूरे एप्लिकेशन के स्रोत कोड को वितरित किए बिना इसे अपने एप्लिकेशन में उपयोग नहीं कर सकते हैं। [कम मात्रा के उपयोग] के लिए अपवाद हैं (http://www.codesynthesis.com/products/xsd/free-license.xhtml) या हालांकि खरीदने के लिए मालिकाना लाइसेंस। – Jarekczek

3

Altova XML Spy एक एक्सएसडी से सी ++ उत्पन्न कर सकता है, यह वाणिज्यिक है लेकिन 30 दिन का निःशुल्क परीक्षण है यदि आप इसे आजमा सकते हैं।

0

एक ऐसा माइक्रोसॉफ्ट टूल है जो मुझे लगता है, xsd.exe कहा जाता है (लेकिन मैंने इसे स्वयं नहीं किया है)।

+8

मैं गलत हो सकता था, लेकिन ऐसा लगता है कि यह सी ++ का समर्थन नहीं करता है, केवल .Net C#, VB और J # – Andre

+5

xsd.exe मानक C++ का समर्थन नहीं करता है, केवल माइक्रोसॉफ्ट के "प्रबंधित" सी ++ जो सीएलआर एक्सएमएल सामान का उपयोग करता है। – Matthew

3

gSOAP Toolkit यह भी कर सकता है! यह हल्का वजन है, और सी/सी ++ का समर्थन करता है। मैंने पहले से ही सफलता के साथ बहुत मांग परियोजनाओं में इसका इस्तेमाल किया है। इसके अलावा, यह जीपीएल 2 के तहत लाइसेंस प्राप्त है।

पोर्टेबिलिटी: जीएसओएपी एम्बेडेड सिस्टम और छोटे ओएस (उदाहरण के लिए विनसी, सिम्बियन और पामओएस) सहित अधिकांश प्लेटफ़ॉर्म का समर्थन करता है। पोर्टेबिलिटी का परीक्षण विंडोज (98, एक्सपी, विस्टा), लिनक्स, यूनिक्स, मैक ओएस एक्स, सोलारिस, एचपी-यूएक्स, एईक्स, फ्रीबीएसडी, टीआरयू 64, आईरिक्स, क्यूएनएक्स और वीएक्सवर्क्स के लिए किया जाता है।

+3

कोडसिंथेसिस जनरेटर के रूप में एक ही लाइसेंसिंग सीमा के रूप में दिखाई देता है। –

3

गूगल पर XmlPlus-xsd2cpp देखें:

XmlPlus xsd2cpp प्रदान करता है W3C XML-स्कीमा के माध्यम से सी ++ एक्सएमएल डेटा-बाइंडिंग "का उपयोग करने के लिए सरल"। XmlPlus की

प्रयोग GNU Lesser General Public License

+2

कृपया ध्यान दें कि टूल Google द्वारा नहीं है, यह अभी Google कोड पर होस्ट किया गया है। – Beginner

0

द्वारा कवर किया जाता सभी जनरेटर बिल्कुल भयानक हैं।

एक्सएसडी एक वर्ग पदानुक्रम का वर्णन करता है जिसमें कक्षाओं में उप-वर्ग होते हैं, जिनमें अन्य उप-वर्ग शामिल हो सकते हैं और आप जो भी करना चाहते हैं, वह उसी तरह इसका प्रतिनिधित्व करता है।

<xs:element name="shipto"> 
    <xs:complexType> 
    <xs:sequence> 
     <xs:element name="name" type="xs:string"/> 
     <xs:element name="address" type="xs:string"/> 
     <xs:element name="city" type="xs:string"/> 
     <xs:element name="country" type="xs:string"/> 
    </xs:sequence> 
    </xs:complexType> 
</xs:element> 

आप की तरह कुछ का उत्पादन करना चाहते हैं:

class shipTo 
{ 
    private: 
    string name; 
    string address; 
    string city; 
    string country; 

    public: 
    set_Name(); 
    get_Name(); 
    ... 
} 

आप इसे खोजने के लिए नहीं जा रहे हैं

उदाहरण के लिए अगर यह अपने स्कीमा है। मुझे मिली सबसे नज़दीकी चीज xjc है, जो जावा के लिए है।

आप कुछ कार्यक्षमता की अपेक्षा करेंगे क्योंकि यह कार्यक्षमता मौजूद होगी, लेकिन मुझे अभी तक यह नहीं मिला है, और हाँ, मैंने अल्टोवा एक्सएमएल-स्पाई का उपयोग किया है। मुझे गंभीरता से हैरान है कि कोई भी कोड जनरेटर के रूप में सुझाव देगा। इसका जेनरेट कोड बिल्कुल भयानक है।

मैं अपने प्रोजेक्ट के लिए ऐसा करने के लिए एक लेक्स/बाइसन पार्सर लिख रहा हूं क्योंकि अब तक के सभी टूल्स मैं काफी भयानक कोड का उत्पादन कर पा रहा हूं। अल्टोवा में 30 दिन का परीक्षण अवधि है, अगर आप मुझ पर विश्वास नहीं करते हैं, तो इसे आजमाएं। मेरे एक्सएसडी के लिए एक लेक्स/बाइसन पार्सर लिखना आसान है, यह एक $ 500 पेशेवर कोड पैकेज का उपयोग करना है जो एक भयानक वर्ग का प्रतिनिधित्व करता है।

मुझे विश्वास नहीं है कि लोग सी ++ में एक्सएमएल का उपयोग करते हैं क्योंकि इसके लिए उपकरण भयानक हैं।

+0

क्या आप हमें "खराब उपकरण" के उत्पादन का एक उदाहरण दिखा सकते हैं और समझा सकते हैं कि आपको क्यों बुरा लगता है? –

+0

प्रतिक्रिया में नहीं हो सकता क्योंकि मैं यहां "मिनी-मार्कडाउन स्वरूपण" में फंस गया हूं। मैंने आपको एक उदाहरण स्कीमा दिया - आगे बढ़ें और उस पर अल्टोवा एक्सएमएल जासूस चलाएं और उदाहरण के लिए इसकी तुलना करें मेरा हाथ XSD-> सी ++ लेक्स/बाइसन/हैक उत्पादन करता है। आगे बढ़ें। मैं उपलब्ध उपकरणों के साथ सबसे कम प्रभावित नहीं हूँ। एक्सजेसी काफी अच्छे कोड का उत्पादन करता है, हालांकि, यह जावा में है इसलिए यह मेरे लिए उपयुक्त नहीं है। मुझे लगता है कि मैं पत्थर चाकू और भालू के साथ काम कर रहा हूँ। – user6269400

+0

अल्टोवा जासूस नहीं है ... अपनी प्रस्तावित कक्षा संरचना देखें और सहमति दें कि यह उचित दिखता है। शायद आप 1-2 वाक्यों में समझा सकते हैं कि अल्टोवा क्या करता है जिसे आप नापसंद करते हैं। –

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