2011-12-05 5 views
14

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

हालांकि, कभी-कभी कोई उपयोगकर्ता प्रबंधित करेगा एक वर्टिकल टैब कैरेक्टर (हेक्स 0 बी) या एक फॉर्म फीड (हेक्स 0 सी) युक्त एक स्ट्रिंग दर्ज करने के लिए। इसे एक्सएमएल टूल्स द्वारा संसाधित नहीं किया जा सकता है और ऐप को बार्फ़ करने का कारण बनता है।

मेरे आवेदन में 'राउंड ट्रिप' प्रक्रिया के दौरान मूल इनपुट को संरक्षित करना काफी महत्वपूर्ण है, इसलिए मैं किसी भी पात्र को बाहर निकालने के लिए नाराज हूं, विशेष रूप से फॉर्म फीड जैसी चीजें जिन्हें कभी-कभी उपयोग किया जाता है सादे पाठ फ़ाइलों में।

क्या एक्सएमएल प्रोसेसिंग शामिल होने पर इन पात्रों को संभालने के लिए कोई स्वीकार्य सर्वोत्तम अभ्यास या सामान्य रणनीति है?

उत्तर

-3

आपको एम्परस्टैंड (�&#0x1F के माध्यम से) का उपयोग करके उनसे बच जाना चाहिए, फिर अंत में उन्हें डीकोड/पुनर्स्थापित करें।

XmlTextWriter incorrectly writing control characters

+0

-1: इसका कोई मतलब नहीं है। अवैध एक्सएमएल एक्सएमएल नहीं है। –

+0

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

+3

वास्तव में, सवाल कोई समझ नहीं आता है। यह एक और मामला है जहां डेवलपर को इस तथ्य के लिए तैयार करने के लिए कहा जा रहा है कि डेटा भेजने वाले लोग एक्सएमएल को समझ नहीं पाते हैं। –

3

हाँ देखें, दुर्भाग्य से कुछ अक्षर एक्सएमएल में अवैध हैं, और कोई इकाई बराबर है। उन उदाहरणों में से एक के रूप में, देखें:

http://www.jdom.org/docs/apidocs.1.1/org/jdom/Element.html#setText(java.lang.String) 

जो एक स्ट्रिंग सेटर है ... जो अपवाद फेंक सकता है! वर्टिकल टैब उन पात्रों में से एक है जिसके लिए कोई एक्सएमएल इकाई नहीं है, न ही अकेले एक्सएमएल के साथ "बचने" का एक तरीका है।

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

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