2011-06-04 13 views
5

यदि मैं कुछ जानकारी संग्रहीत करने के लिए एक एक्सएमएल फ़ाइल का उपयोग करने जा रहा हूं, तो क्या मुझे एक XML पार्सर की आवश्यकता होगी जो डेटा को पढ़ने/लिखने के लिए है? क्या मैं स्ट्रिंग मैनिपुलेशन फ़ंक्शंस का उपयोग कर सकता हूं और क्यों नहीं?डेटा स्टोर करने के लिए एक्सएमएल फाइलों का उपयोग

उत्तर

5

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

4

नहीं ... मैं दोहराता हूं ... हाथ से एक्सएमएल का विश्लेषण या निर्माण न करें।

मेरे काम पर, हम विभिन्न विक्रेताओं के बीच कई इंटरफेस लागू करते हैं। मैं आपको नहीं बता सकता कि हम कितनी बार एक एक्सएमएल आधारित इंटरफेस पर काम कर रहे हैं और किसी तरह के एस्केपिंग/डिकोडिंग मुद्दे में भाग ले चुके हैं। जब मैं एक एक्सएमएल आधारित सेवा से कनेक्ट करता हूं तो पहले परीक्षणों में से एक यह है कि इनपुट में अवैध xml वर्ण डालें। !

आपके नाम ?: बॉब <> & "

पार्स करने में त्रुटि XML दस्तावेज़ क्या है

हम यह कई बार में चलाने की है कि हमारे इंजीनियरों में से किसी को कुछ भी समान जाँच करता है, तो:

 
xml = "<rootnode>" 
xml += "<leafnode>" + someValue + "</leafnode>" 
xml += "</rootnode>" 

हम गंभीरता से उनके चर वेतन डॉकिंग विचार करेंगे जैसे ही "someValue" एक अमान्य वर्ण है, तो आप कर रहे हैं pooched फिर अपने कोड इस तरह की तलाश में शुरू होता है:।।

 
xml = "<rootnode>" 
xml += "<leafnode>" + XmlEscape(someValue) + "</leafnode>" 
xml += "<leafnode>" + XmlEscape(someValue) + "</leafnode>" 
xml += "</rootnode>" 

तो कुछ अभी भी बह रही है, इसलिए प्रतिभाशाली इंजीनियर की कोशिश करता है:

 
xml = "<rootnode>" 
xml += "<leafnode>" + XmlEscape(someValue) + "</leafnode>" 
xml += "<leafnode>" + XmlEscape(someValue) + "</leafnode>" 
xml += "</rootnode>" 

xml = XmlEscape(xml) 

नोट: इस प्रक्रिया को वास्तव में दो बार जबकि एक इंटरफेस पर काम कर रहे मेरे लिए हुआ है।

इससे पहले कि आप जानते हैं, तार भर में अपनी स्ट्रीम की तरह

 
&amp;lt;rootnode>HELP<rootnode> 
&amp;lt;rootnode&gt;ME&amp;lt;rootnode&amp;gt; 

सारांश देख समाप्त होता है:

एक पुस्तकालय का उपयोग करें। के thx अलविदा।

+0

पर डॉक्स और मैनुअल खोजने के लेखन किया जाता है एक्सएमएल के साथ प्रयोग किया जाता है? क्या किसी प्रकार का निर्मित या मानक पुस्तकालय है? –

+0

जावा में वे रूबी थेरे रत्न में पुस्तकालय हैं। जावा मानते हुए, अपाचे वेबसाइट पर जाएं और उनके टूल देखें। – Thufir

0

हम tinyXml2 उपयोग कर सकते हैं और हमारा काम आसान बनाने के लिए, बस शीर्षक और tinyxml2 की cpp फ़ाइल को शामिल और आप लगभग पार्स करने और क्या पुस्तकालय होने के लिए कृपया

http://www.grinninglizard.com/tinyxml2/

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

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