Почему элементы XDocument всегда нулевые

У меня есть следующий код

const string xml = @"<?xml version=""1.0"" encoding=""utf-8"" ?>
                            <Revisions>
                                <Revision Key=""MIDTERM"">5850</Revision>
                                <Revision Key=""LONGTERM"">5850</Revision>
                            </Revisions>";
        var key = "MIDTERM";
        var _RevisionsXml = XDocument.Parse(xml, LoadOptions.PreserveWhitespace);
        var revisionNode = _RevisionsXml
                                .Root
                                .Elements("Revision")
                                .FirstOrDefault(elem => elem.Attribute("Key").ToString() == key);

Ревизионный узел всегда нулевой, не уверен, что мне не хватает.


person Vinod    schedule 19.07.2011    source источник


Ответы (2)


Вы хотите использовать .Value вместо .ToString() при сравнении ключа.

Вызов ToString() для атрибута вернет Key="MIDTERM", который в основном используется для целей отладки.

Убедитесь, что ваш XML правильно сформирован, иначе вы можете столкнуться с NullReferenceException при вызове .Value, если нет атрибута с именем Key.

person Pierre-Alain Vigeant    schedule 19.07.2011
comment
Спасибо, я смог понять это позже о простой ошибке. - person Vinod; 19.07.2011

Вы ищете значение атрибута Key:

var revisionNode = _RevisionsXml
                        .Root
                        .Elements("Revision")
                        .FirstOrDefault(elem => (string)elem.Attribute("Key") == key);
person BrokenGlass    schedule 19.07.2011