Входной XML-не, как и ожидалось (это «пустой») и исключение происходит во время XDocument.Load
(или XDocument.Parse
, и т.д.).
В конечном счете xdoc
не содержит ожидаемых - и «подозрительные» линии никогда не запускаются; опять же, это исключение возникает, когда XML равен разобранный, а не когда он перечислит/перемещается. Этот сценарий должен быть легко идентифицирован с помощью attached debugger или трассировки стека.
Ниже приведен минимальный код, который может быть запущен в LINQPad в качестве операторов C#. Я изменил его, чтобы отобразить красиво с дампом. Обратите внимание, что работает как ожидалось.
var xmlStr = @"<?xml version=""1.0"" encoding=""UTF-8"" ?>
<response success=""true"">
<struct>value</struct>
</response>";
var xdoc = XDocument.Parse(xmlStr);
xdoc.Descendants("response")
.Select(e => e.Element("struct").Value)
.Dump();
Вот как исключение может быть вызвано (и это не имеет ничего общего с Descendants
или другим перечислением/навигацией):
var xmlStr = @"<?xml version=""1.0"" encoding=""UTF-8"" ?>";
var xdoc = XDocument.Parse(xmlStr);
// --> XmlException: Root element is missing
Как 'xdoc' загруженным и что делает его * действительно * содержат? Я бы предположил, что это * не * представляет этот XML. – user2246674
@ user2246674 ya thats проблема, с которой я столкнулся, могу ли я сделать это другим способом – GowthamanSS
@GowthamanSS ваш код работает без проблем. –