2013-03-19 11 views
8

मैं का उपयोग कर XmlReader पुनर्प्राप्त कर रहा हूं।System.Xml.XmlException: पार्सिंग करते समय फ़ाइल का अप्रत्याशित अंत नाम

Here is my input

जब मैं कोड की इस पंक्ति चलाएँ:

XDocument currentXDoc = XDocument.Load(ktXmlReader.ReadSubtree()); 

यह पहली बार काम करता है, पहले उत्पाद नोड में पढ़ने के रूप में उम्मीद।

दूसरी बार यह चलता है, मैं निम्नलिखित अपवाद:

System.Xml.XmlException: 
Message: Unexpected end of file while parsing Name has occurred. Line 1, position 2048. 

Stacktrace: at System.Xml.XmlTextReaderImpl.Throw(String res, String arg) 
    at System.Xml.XmlTextReaderImpl.ParseQName(Boolean isQName, Int32 startOffset, Int32& colonPos) 
    at System.Xml.XmlTextReaderImpl.ThrowTagMismatch(NodeData startTag) 
    at System.Xml.XmlTextReaderImpl.ParseEndElement() 
    at System.Xml.XmlTextReaderImpl.ParseElementContent() 
    at System.Xml.XmlSubtreeReader.Read() 
    at System.Xml.Linq.XContainer.ReadContentFrom(XmlReader r) 
    at System.Xml.Linq.XContainer.ReadContentFrom(XmlReader r, LoadOptions o) 
    at System.Xml.Linq.XDocument.Load(XmlReader reader, LoadOptions options) 

मैं मिला this question और this question कि मेरा के समान थे, लेकिन मैं काफी यकीन है कि मेरे XML ठीक से बनाई है कर रहा हूँ (मैं यह कर सकते हैं एक sproc अब तक चल रहा है)

मेरे विचारों से सीधे इसे पाने:

  1. 2048 कंप्यूटर में एक बहुत ही संदिग्ध संख्या है। क्या मैं XDocument या XmlReader में कहीं 2 केबी सीमा में चल रहा हूं?
  2. मेरे जबकि पाश में ktXmlReader.Read() किसी भी तरह अन्य सभी नोड्स लंघन और EOF के लिए सीधे
+0

http://forums.asp.net/t/1191911.aspx – Codeman

उत्तर

4

मुझे उत्तर here मिला।

मेरी समस्या यह थी कि जब मैं XmlReader प्राप्त कर रहा था तो मैं एक उपयोग कथन के साथ SqlConnection बंद कर रहा था।

मैंने अपने "शक्ति के टावर का उपयोग करके" कनेक्शन जोड़ा और इसे पैरामीटर के रूप में पास किया, इसे खोलते हुए, और सब कुछ पूरी तरह से काम किया।

0

XmlReader निष्पादन जा रहा है एक तरह से ऑपरेशन है। आप इसकी स्थिति को रीसेट करने का प्रयास कर सकते हैं, या क्या आसान है - create a new reader from existing document

+0

दिलचस्प, क्या आपके पास कोड कोड है कि मैं XNode को कैसे कॉल कर सकता हूं। एक पाठक से बनाएं, या इसके लिए मेरे मौजूदा कोड के रिफैक्टर की आवश्यकता होगी? ऐसा करने के लिए ऐसा लगता है, मुझे XmlReader – Codeman

+0

से XDocument की बजाय XDocument से XmlReader बनाना है, इसके अलावा, मैं कई दिशाओं में पढ़ने की कोशिश नहीं कर रहा हूं। मैं अपने इनपुट – Codeman

+0

@ फीनिक्सब्लैड 9 में व्यक्तिगत सबट्री (उत्पाद नोड्स) पढ़ने के लिए रीडसब्री को कॉल कर रहा हूं: मुझे पता है कि पाठक से दस्तावेज़ कैसे लोड करना है, नोड नहीं। लेकिन क्या अंतर है? सिवाय इसके कि आपको नोड्स के बजाय कई दस्तावेज़ मिलेंगे। – abatishchev

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