我正在使用XmlReader
检索到的 using SqlCommand.ExecuteXmlReader
。
当我运行这行代码时:
XDocument currentXDoc = XDocument.Load(ktXmlReader.ReadSubtree());
它第一次工作,按预期读取第一个 Product 节点。
第二次运行时,我得到以下异常:
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)
我确实发现了这个问题和这个问题与我的相似,但我相当确定我的 XML 格式正确(我可以直接从运行存储过程中得到它)
到目前为止我的想法:
- 2048 在计算机中是一个非常可疑的数字。我是否在某个地方遇到了 2KB 的
XDocument
限制XmlReader
? - 我在 while 循环中的 ktXmlReader.Read() 以某种方式跳过所有其他节点并直接进入 EOF