Чтение атрибута узлов 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
};