LINQ to xml查询访问未知的标题元素

时间:2012-11-12 13:11:00

标签: c# xml linq linq-to-xml

我有一个以下结构的xml文档,我试图用C#查询LINQ到xml

<recurrence>
    <rule>
        <firstDayOfWeek>mo</firstDayOfWeek>
        <repeat>
            <weekly mo="TRUE" fr="TRUE" weekFrequency="1" />
        </repeat>
    <repeatForever>FALSE</repeatForever>
    </rule>
</recurrence>

我正在尝试查询它以确定有关xml中包含的内容以及基于此构建对象的信息。

在“重复”元素中,每天,每月或每年内元素的标题可以是每周(如样本中)。

我在选择每周元素时遇到问题。因为我不确定它会被称为每周一次,所以我试图低于

XDocument info = XDocument.Parse(source.RecurrenceData);

var data = from d in info.Descendants("recurrence").Descendants("rule").Descendants("repeat") 
           select d;

var element = data.Elements().First();

这始终是null。选择此元素的最简单方法是什么,无论是每日,每周,每月还是每年元素,然后确定其中可能包含或不包含的各种属性?

1 个答案:

答案 0 :(得分:0)

我已将以下代码放在控制台应用程序中,并且该元素不为null。您确定source.RecurrenceData是否正确?

string xml = @"<recurrence>
                <rule>
                    <firstDayOfWeek>mo</firstDayOfWeek>
                    <repeat>
                        <weekly mo=""TRUE"" fr=""TRUE"" weekFrequency=""1"" />
                    </repeat>
                <repeatForever>FALSE</repeatForever>
                </rule>
            </recurrence>";

XDocument info = XDocument.Parse(xml);

var data = from d in info.Descendants("recurrence").Descendants("rule").Descendants("repeat") select d;

var element = data.Elements().First();