Заполнение и копирование узлов XML с использованием Linq в XML - PullRequest
1 голос
/ 08 ноября 2011

В конце цель состоит в том, чтобы создать новый файл XML, отфильтрованный из целого списка узлов, путем сравнения каждого значения атрибута noed со списком существующих значений.Моя проблема в том, что я могу прочитать значение определенного узла, а затем сравнить его со значением динамической переменной, но после этого я хочу прочитать тег, который его оборачивает, и скопировать его в мой новый файл XML.

и мой код для получения значений для сравнения:

var ElementsList = from Elements in xdoc.Descendants("Members") 
where Elements.Element("Member").FirstAttribute.Value == "rbtn_G9000_1_11_1201__2" 
select Elements.Element("Member"); 

это даст мне код для самого узла, мне нужен код для получения узла обтекания (Правило) ...

как я могу это сделать?

1 Ответ

0 голосов
/ 08 ноября 2011

Несколько чище версия запроса:

var ElementsList = 
    from els in xdoc.Descendants("Members") 
    let member = els.Element("Member")
    where member.FirstAttribute.Value == "rbtn_G9000_1_11_1201__2" 
    select member.Parent

См. http://msdn.microsoft.com/en-us/library/system.xml.linq.xelement.aspx

Еще проще (непроверенный код, угадывание предполагаемого имени атрибута):

// assuming some variable like:
var qid = "rbtn_G9000_1_11_1201__2"; 


var query = string.Format("/Rule/Members/Member[@QId='{0}']/..", qid);
var ElementsList = from member in 
    xdoc.XPathSelectElements(query);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...