2010-02-17 14 views
23

के साथ शुरू नहीं हो सकता है मैं सी # में कुछ एक्सएमएल पार्स कर रहा हूं। मैं इसे डेटाबेस से प्राप्त कर रहा हूं, और इसे XmlTextReader के साथ पढ़ने से पहले इसे मेमोरीस्ट्रीम में परिवर्तित कर रहा हूं। समस्या यह है कि मुझे यह त्रुटि मिलती है: Name cannot begin with the ' ' character, hexadecimal value 0x20. Line 1, position 3. मेरे एक्सएमएल और इसे पढ़ने के लिए मेरा कोड निम्नलिखित है (यह डेटाबेस से ठीक है, कोई खाली पहला अक्षर नहीं है)। कोई सुझाव?नाम ''

एक्सएमएल:

<? xml version="1.0" encoding="utf-8" ?> 
<form> 
    <e order="0" type="custom" name="test"> 
     <fi type="text" /> 
     <o /> 
    </e> 
    <e order="1" type="zip" /> 
    <e order="2" type="state" /> 
</form> 

सी #:

byte[] byteArray = new byte[formXml.Length]; 
System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding(); 
byteArray = encoding.GetBytes(formXml); 
MemoryStream xmlStream = new MemoryStream(byteArray); 

XmlTextReader xmlReader = new XmlTextReader(xmlStream); 
while (xmlReader.Read()) 
{ 
    if (xmlReader.HasValue) 
    { 
     returnString += xmlReader.Depth.ToString(); 
    } 
} 

मैंने सोचा कि यह एन्कोडिंग हो सकता है, लेकिन मैं UTF8 और ASCII द्वारा की कोशिश की है और कुछ भी नहीं मिल सकता है।

+1

बीटीडब्ल्यू, जब तक कि आप अभी भी .NET 1.1 का उपयोग नहीं कर रहे हैं, आपको 'XmlReader.Create()' का उपयोग 'XmlTextReader()' के बजाय करना चाहिए। –

+0

यह विशेष चरित्र की अनुमति नहीं देता है .. –

उत्तर

22

हां, आपको < के बीच की जगह को हटाना चाहिए? और एक्सएमएल।

<?xml version="1.0" encoding="utf-8" ?> 
<form> 
    <e order="0" type="custom" name="test"> 
     <fi type="text" /> 
     <o /> 
    </e> 
    <e order="1" type="zip" /> 
    <e order="2" type="state" /> 
</form> 

Here प्रासंगिक XML स्पेक है।

+5

और त्रुटि संदेश (एक बार के लिए) समस्या के स्थान के बारे में पूरी तरह से पता चलता है। – AakashM

3

पहले रिक्ति निकालें दस्तावेज़ में: - कोई जगह

<?xml version="1.0" encoding="utf-8"?> 
5

आपका त्रुटि संदेश काफी स्पष्ट है, तो आप लाइन 1 में posn 3 में एक त्रुटि है <?xml की कोशिश करो।

7

इस त्रुटि का एक अन्य आम स्रोत तब होता है जब XmlReader आपकी स्क्रिप्ट को xml के रूप में पढ़ने का प्रयास करता है। स्क्रिप्ट टैग के बाद स्क्रिप्ट को टिप्पणी करना प्रारंभ करना एक अच्छा कारण है। वे अभी भी दौड़ेंगे:

<script language="javascript" type="text/javascript"> 
<!-- 
    function myFunction() { 
    } 
    ... 
--> 
</script> 
+0

मेरी इच्छा है कि मैं इसे 2 दिन पहले जानता था - धन्यवाद! – Julian

0

मुझे एक XML फ़ाइल पढ़ने में एक ही त्रुटि मिल रही थी।

यह पता चला कि मेरे पास मेरी फ़ाइल में < चरित्र है।

मैं कुछ बच्चे नोड्स पर टिप्पणी कर रहा था और टिप्पणी टैग में से किसी एक को मिटाने पर, मैंने फ़ाइल में एक अतिरिक्त < छोड़ा था। त्रुटि संदेश वापस आया "नाम 'आर' चरित्र से शुरू नहीं हो सकता है और यह प्रश्न उस सटीक खोज के लिए शीर्ष Google परिणाम था।

<node> 
    <!-- <child /> -->< 
    <child /> 
    <child /> 
</node> 
0

इस वजह से मुझे बहुत सारी त्रुटियां थीं। सुनिश्चित करें कि आपके पास रिक्त स्थान नहीं हैं। दो जगहें हैं जहां मैंने रिक्त स्थान हटा दिए जो मेरे लिए काम करते थे।

था:

xmlns: xsi="http://www.w3.org/2001/XMLSchema-instance" 

क्या काम किया:

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 

वहाँ एक जगह यहाँ भी था: < एबीसी: डीईएफ़>। < और> के आसपास सभी रिक्त स्थान हटाएं।

1

उसी मामले में मेरी त्रुटि यह थी कि फ़ाइल यूटीएफ -8 के रूप में सहेजी नहीं गई थी।

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