2008-11-05 9 views
18

एक XML विशेषता XS रूप में घोषित किया: बूलियन स्वीकार्य "सही", "गलत" हो सकता है, "0" या "1"। हालांकि, .NET में, Boolean.Parse() केवल "सत्य" या "झूठी" स्वीकार करेगा। यदि यह "0" या "1" देखता है, तो यह "खराब प्रारूप" अपवाद फेंकता है।एक्सएमएल बूलियन विशेषता (.NET में) को पार्स करने का सबसे अच्छा तरीका क्या है?

तो, यह देखते हुए कि, एक बूलियन में इस तरह के एक मूल्य पार्स करने के लिए सबसे अच्छा तरीका क्या है?

(दुर्भाग्य से, मैं .NET 2.0 समाधान करने के लिए सीमित कर रहा हूँ, लेकिन अगर v3.5 कुछ प्रदान करता है, मैं इसके बारे में जानने में खुशी होगी।)

उत्तर

35

मुझे लगता है कि XmlConvert आम भाषा क्रम प्रकार और एक्सएमएल प्रकार के बीच परिवर्तित करने के लिए सभी तरीकों है। विशेष रूप से XmlConvert.ToBoolean बिल्कुल संभालती बूलियन मान (वैध तार कर रहे हैं "1" या सच के लिए "सही" और "0" या "गलत" झूठा के लिए)।

+0

उत्कृष्ट .. वास्तव में जो मैं खोज रहा था (मुझे पता था कि मुझे नेट लाइब्रेरी संदर्भ के माध्यम से अधिक समय बिताया जाना चाहिए था) –

2

CBoolBoolean.Parse के बजाय का उपयोग चाल करना चाहिए: हालांकि यदि आप एक try/catch ब्लॉक (जो जब Boolean.TryParse का उपयोग कर आवश्यकता नहीं होगी) में एम्बेड करना होगा, इसे सफलतापूर्वक सहित सही/गलत और 0/1 सबसे 'समझदार' बूलियन मूल्यों, परिवर्तित कर देंगे।

संपादित करें: जैसा कि एक टिप्पणी में बताया गया है, यह उत्तर सी # प्रोग्रामर के लिए बेकार है, क्योंकि CBool एक वीबी-आईएसएम है। यह Microsoft.VisualBasic.CompilerServices.Conversions::ToBoolean पर नक्शा करता है, जो सामान्य खपत के लिए उपयुक्त नहीं है। जो XMLConvert क्लास को स्वीकार किए गए उत्तर में एक बेहतर विकल्प में इंगित करता है।

+0

मैं केवल वीबी 6 के लिए परिभाषित "सीबीूल" देख रहा हूं, न कि .NET के लिए। ऐसा नहीं है कि VB.NET कुछ Microsoft.VisualBasic को यह aliasing है विधि संभव है। *, लेकिन मैं सी # का उपयोग कर रहा है, इसलिए मुझे पता है कि अंतर्निहित विधि कॉल करने की जरूरत होगी। –

0

यह पार्स करने के लिए प्रयास करने से पहले डेटा Sanitize:

string InnerText = yourXmlNode.InnerText;  
if (InnerText.Equals("0")) 
    InnerText = "false"; 
else if (InnerText.Equals("1")) 
    InnerText = "true"; 

से किसी भी अन्य प्रविष्टि सच, झूठी, या अभी भी एक "बुरा प्रारूप" अपवाद फेंक दी जाएगी (यह होना चाहिए)।

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

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