2013-12-13 5 views
2

У меня есть объект XDocument, где я пытаюсь получить прямой родительский элемент на основе значения дочернего элемента.Получить родительский элемент на основе значения дочернего элемента

Получение значения дочернего элемента не было проблемой, но я борюсь с поиском правильного способа получить только родительский элемент. Не очень много работая с XML, у меня есть подозрение, что решение прост, и я его переусердствую.

По существу, на основе нижеприведенного XML, если <Active>true</Active>, то я хочу, чтобы прямой родительский элемент (т. Е. <AlertNotification>) и другие элементы.

Заранее спасибо.

Пример XML

<?xml version="1.0" encoding="utf-16"?> 
<Policies xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLschema"> 
    <PolicyID>1</PolicyID> 
    <EmailNotification> 
     <Active>false</Active> 
    </EmailNotification> 
    <AlertNotification> 
     <Active>true</Active> 
    </AlertNotification> 
    <AlarmEnabled> 
     <Active>false</Active> 
    </AlarmEnabled> 
</Policies> 
+0

Но 'AlertNotification' не содержит каких-либо данных –

ответ

3

Я думаю, что вы должны заменить utf-16 в первой строке utf-8. Тогда вы можете попробовать это:

XDocument doc = XDocument.Load(your file); 

var elements = doc.Descendants("Active") 
        .Where(i => i.Value == "true") 
        .Select(i => i.Parent); 
+0

Этот метод извлеченный' верно ', но я был в состоянии извлечь только родительский элемент оттуда. Спасибо! – TestK

Смежные вопросы