Чтение атрибута узлов XML в соответствии с пользовательским вводом

<Default>
<SharepointContentType id="SharePointContentType">

<name id="Test1"
         DisplayName="TestOne"
         SharepointGroup="Test1SPGp">
    </name>

<name id="Test2"
         DisplayName="TestTwo"
          SharepointGroup="Test2SPGp">
    </name>
.
.
.
.

</SharepointContentType>
.
.
.
.
<Default>

Для приведенной выше схемы, я хочу, чтобы спуститься как, найти узел, где идентификатор SharePointContentType чем найти тег <name > где идентификатор Test1(определяется пользователем) и затем извлекает значение для элемента SharepointGroup

например, если пользовательский ввод Test1 чем положено должно быть Test1SPGp Пожалуйста, помогите, я пытался использовать linq и сумел написать код, как показано ниже, но не смог добиться успеха.

    XDocument xDoc = XDocument.Load(GetDefaultXMLFile());

    var feeds = from feed in xDoc.Descendants("name")
                where feed.Attribute("id").Equals("admin")
                select new
                {
                    fxfv = feed.Attribute("SharepointGroup").Value
                };

1 ответ

Решение

Я думаю, что у вас есть ошибка в состоянии, смотрите ниже:

feed.Attribute ("id") возвращает класс XAttribute, поэтому вы не можете использовать equals для сравнения со строкой, но после свойства Value вы можете.

        var feeds = from feed in xDoc.Descendants("name")
                    where feed.Attribute("id").Value.Equals("Test1")
                    select new
                    {
                        fxfv = feed.Attribute("SharepointGroup").Value
                    };
Другие вопросы по тегам