Система.XML.XmlException: непредвиденный конец файла при анализе имени
Я использую XmlReader
получены с помощью SqlCommand.ExecuteXmlReader
.
когда я запускаю эту строку кода:
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)
Я нашел этот вопрос и этот вопрос это было похоже на мое, но я уверен, что мой XML хорошо сформированный (я могу получить его непосредственно от запуска sproc)
мои идеи до сих пор:
- 2048-очень подозрительное число в компьютерах. Я сталкиваюсь с ограничением 2KB где-то в
XDocument
илиXmlReader
? - мой ktXmlReader.Read () в цикле while каким-то образом пропускает все другие узлы и идет прямо к EOF
2 ответов
Я нашел ответ!--1-->здесь.
моя проблема заключалась в том, что я закрывал sqlconnection с помощью оператора using, когда я получал XmlReader.
Я добавил соединение к моему "используя башню силы" и передал его как параметр, держа его открытым, и все работало отлично.
выполнение XmlReader-это операция в одну сторону. Вы можете попытаться сбросить его положение, или что проще -создайте нового читателя из существующего документа.