2008-10-22 12 views
5

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

आप इस परिदृश्य के लिए अन्य एक्सएमएल सीरियलाइजेशन टूल की सिफारिश करेंगे। मैं डोम नहीं चाहता, क्योंकि यह एक मेमोरी हॉग प्रतीत होता है, और मैं पहले ही मेमोरी डेटा में बड़े पैमाने पर काम कर रहा हूं। आदर्श रूप में, मुझे एक स्ट्रीमिंग पार्सर चाहिए जो तेज़ है, और एमएफसी के साथ उपयोग करना आसान है। मेरा वर्तमान फ्रंट धावक expat है जो तेज़ और सरल है, लेकिन कक्षा क्रमबद्धता कोड द्वारा बहुत से वर्ग की आवश्यकता होगी। वहां विकल्प लागू करने के लिए कोई अन्य कुशल और आसान है कि लोग सिफारिश करेंगे?

उत्तर

4

Boost Serialization लाइब्रेरी एक्सएमएल का समर्थन करता है। इस पुस्तकालय में मूल रूप से शामिल हैं:

  1. एमएफसी धारावाहिकता के सिद्धांतों से शुरू करें और यह प्रदान की जाने वाली सभी अच्छी चीजें लें।
  2. एमएफसी धारावाहिकता के हर एक मुद्दे को हल करें!

एमएफसी की तुलना में सुधारों में से एक्सएमएल के लिए समर्थन है। ध्यान दें कि आप इस क्रमिकरण के XML स्कीमा को जरूरी नहीं नियंत्रित करते हैं। यह अपनी खुद की स्कीमा का उपयोग करता है।

+0

बूस्ट सीरियलाइजेशन एक अच्छा फिट जैसा दिखता है, और एमएफसी से दूर जाने से अच्छा पहला कदम हो सकता है। –

2

एक अच्छा समाधान libxml होगा। यह एक्सएमएल प्रसंस्करण के लिए हल्के SAX पार्सिंग और डेटा संरचनाएं प्रदान करता है। कई डॉम पुस्तकालय हैं जो libxml के शीर्ष पर बनाए गए हैं।

दुर्भाग्य से यह एक सी पुस्तकालय है, लेकिन सी ++ रैपर उपलब्ध हैं।

कुछ साल पहले मैंने आपके द्वारा उल्लिखित प्रदर्शन समस्याओं के कारण एमएसएक्सएमएल से libxml में स्विच किया था।

यदि आप libxml का उपयोग करने का निर्णय लेते हैं, तो आपको libxslt पर भी एक नज़र रखना चाहिए।

+0

LibXML सभी तरह से! अपनी बहन घटक, LibXSLT को मत भूलना। – spoulson

+0

अच्छा बिंदु, मैंने इसे अपने उत्तर में बताया। –

2

हम Xerces-C++ का उपयोग करते हैं। सेटअप करना आसान था और प्रदर्शन काफी अच्छा है इसलिए हमें बदलने के बारे में सोचने की आवश्यकता नहीं है। हालांकि हम एक्सएमएल भारी नहीं हैं।

मैंने podcast by Scott Hanselman (Hansel Minutes से) सुना है जहां वे एमएसएक्सएमएल और एक्सएसएलटी के एक्सएमएल प्रदर्शन पर चर्चा करते हैं।

0

हम अपनी सभी एक्सएमएल जरूरतों के लिए TinyXML का उपयोग करते हैं, चाहे वह एमएफसी या सीधी सी ++ हो।

http://sourceforge.net/projects/tinyxml

+0

एक डोम शैली दृष्टिकोण का उपयोग करने लगता है जो शायद इस विशेष ऐप के लिए उपयुक्त नहीं है। वैसे भी लिंक के लिए धन्यवाद। –

1
क्या RapidXML के बारे में, मैं इसे एक MFC अनुप्रयोग में उपयोग कर रहा हूँ कुछ संशोधन के साथ UTF-16 std :: तार के साथ समर्थन करने के लिए

। मैं अब तक उससे काफी संतुष्ट हूं।

+0

std :: स्ट्रिंग std :: wstring होना चाहिए, टाइपो के लिए खेद है। -tomgee –

4

यह एक पुरानी समस्या है। मैं 1 999 और 2000 के दौरान दुनिया की सबसे बड़ी सॉफ्टवेयर परियोजना पर सबसे महत्वपूर्ण पथ निर्भरताओं के साथ विकास दल की टीम लीड थी और उस समय के दौरान यह काम मेरे काम का केंद्र था। मुझे आश्वस्त है कि पहिया का आविष्कार कई इंजीनियरों द्वारा किया गया था जो इस बात से अनजान थे कि दूसरों ने पहले ही इसका आविष्कार किया था। सी ++ में एक्सएमएल डेटा बाध्यकारी के बारे में भी यही सच है। मैंने इसका भी आविष्कार किया, और मैं इसे विभिन्न परियोजनाओं पर 10 से अधिक वर्षों से पूरा कर रहा हूं।मेरे पास एक समाधान है जो यहां उल्लेखित मुद्दों और कुछ अतिरिक्त मुद्दों को हल करता है जो बार-बार उत्पन्न होते हैं:

  1. एक्सएमएल अपडेट। यह मौजूदा ऑब्जेक्ट मॉडल में एक्सएमएल का एक सबसेट फिर से लागू करने की क्षमता है। कई मामलों में एक्सएमएल अनुक्रमित वस्तुओं से जुड़ा हुआ है और हम प्रत्येक अपडेट के लिए पुन: अनुक्रमणिका नहीं कर सकते हैं।

  2. COM और CORBA इंटरफ़ेस प्रबंधन। इसी संबंध में एक्सएमएल डेटा बाध्यकारी ऑब्जेक्ट उन्मुख प्रथाओं के माध्यम से स्वचालित किया जा सकता है - तो इंटरफ़ेस ऑब्जेक्ट्स के उदाहरण जो उस डेटा को एप्लिकेशन परत पर प्रदान कर सकते हैं।

  3. राज्य ट्रैकिंग। एप्लिकेशन को अक्सर एक खाली मूल्य बनाम एक गुम मूल्य के बीच अंतर करने की आवश्यकता होती है - दोनों एक खाली स्ट्रिंग बनाते हैं। यह डेटा बाध्यकारी के साथ सत्यापन प्रदान करता है।

स्रोत कोड कम से कम प्रतिबंधक लाइसेंस का उपयोग करता है - कम जीपीएल। परियोजना का समर्थन किया है और प्रबंधित यहां से:

http://www.codeproject.com/KB/XML/XMLFoundation.aspx

अब जब कि यह वर्ष 2010 है, मुझे विश्वास है कि और कोई नहीं पहिया बदलने की कुछ से चुनने के लिए कर रहे हैं क्योंकि प्रयास करेंगे। आईएमएचओ - यह पहिया सबसे पॉलिश और अच्छी तरह से गोल कार्यान्वयन उपलब्ध है।

आनंद लें।

1

gSOAP टूलकिट ऑटो serializes देशी सी और एक्सएमएल से/सी ++ डेटा और XML डेटा बाइंडिंग के माध्यम से पूर्ण XML स्कीमा विनिर्देश का समर्थन करता है:

gSOAP SourceForge Project

यह एक महत्वपूर्ण आधार कोड के लिए 1999 के बाद से विकसित किया गया है कोड जनरेशन उपकरण और पुस्तकालयों के साथ। यह कई डाटाबेसिंग और अनुकूलन सुविधाओं का समर्थन करता है, जो सी और सी ++ प्रकारों से/से एक्सएमएल स्कीमा प्रकारों को मैप करने के लिए विशेष रूप से महत्वपूर्ण है। यह किसी भी सी/सी ++ प्रकार और एसटीएल कंटेनर, कंटेनर टेम्पलेट्स, और चक्रीय डेटा संरचनाओं को क्रमबद्ध कर सकता है। इसका उपयोग डाटाबेसिंग वर्किंग ग्रुप (वर्षों से 100% स्कीमा पैटर्न कवरेज सफलता के साथ) के लिए डब्ल्यू 3 सी स्कीमा पैटर्न में किया गया है। एक सक्रिय ओपन सोर्स यूज़र बेस है और जीएसओएपी विकास कार्यक्षमता का इस्तेमाल कई औद्योगिक परियोजनाओं और फॉर्च्यून 100 कंपनियों में एसओएपी/एक्सएमएल इंफ्रास्ट्रक्चर विकसित करने के लिए किया गया है।

1

यह खेल में देर हो चुकी है, मैं बस उल्लेख करना चाहता हूं कि हम LIBXML का भी उपयोग करते हैं। यह मजबूत और भरोसेमंद है, और अच्छी तरह से काम किया है। थोड़ा बहुत कम स्तर, आप अपने कार्यों के शीर्ष पर कुछ रैपर बनाना चाहते हैं।

<tag attribute="value"/> 

या इस:

उदाहरण के लिए, आप आप इस राशि के आधार पर समारोह रिटर्न का एक अलग अनुक्रम मिल जाएगा

<tag attribute="value"> </tag> 

कभी कभी तुम चाहते हो सकता है कि कभी-कभी आप डॉन परवाह नहीं है

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