简体   繁体   中英

System.Xml.XmlException: Unexpected end of file while parsing Name has occurred

I'm using an XmlReader retrieved using SqlCommand.ExecuteXmlReader .

Here is my input

When I run this line of code:

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

it works the first time, reading in the first Product node as expected.

The second time it runs, I get the following exception:

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)

I did find this question and this question that were similar to mine, but I'm fairly sure my XML is well-formed (I can get it directly from running a sproc)

My ideas so far:

  1. 2048 is a very suspicious number in computers. Am I running into a 2KB limit somewhere in XDocument or XmlReader ?
  2. My ktXmlReader.Read() in the while loop is somehow skipping all the other nodes and going straight to the EOF

I found the answer here .

My problem was that I was closing the SqlConnection with a using statement when I was getting the XmlReader.

I added the connection to my "using tower of power" and passed it as a parameter, keeping it open, and everything worked perfectly.

XmlReader execution is one way operation. You may try to reset it's position, or what is easier - create a new reader from existing document .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM