根据子元素的值获取父元素

本文关键字:元素 获取 | 更新日期: 2024-09-25 11:53:39

我有一个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>

根据子元素的值获取父元素

我认为应该将第一行中的utf-16替换为utf-8。然后你可以试试这个:

XDocument doc = XDocument.Load(your file);
var elements = doc.Descendants("Active")
                  .Where(i => i.Value == "true")
                  .Select(i => i.Parent);