返回所有元素和子元素

时间:2013-06-20 16:32:50

标签: c# xml linq-to-xml

是否可以使用一个LINQ查询一次返回所有元素和子元素的值?使用下面的查询,我能够检索第一个元素,但不能检索子元素。

var query = from c in xDoc.Descendants("file")
            orderby c.Name
            select new
            {
                // This gets the main elements
                Name = (string)c.Element("name").Value,
            };

XML文件如下所示:

<files>
    <file id="1">
        <name>A file</name>
        <processDetails>
            <purpose>It's supposed to get files.</purpose>
            <filestoProcess>
                <file>alongfile.pgp</file>
                <file>Anotherfile.pgp</file>
                <file>YetAnotherfile.CSV</file>
            </filestoProcess>
            <schedule>
                <day>Mon</day>
                <day>Tue</day>
                <time>9:00am</time>
            </schedule>
            <history>
                <historyevent>Eh?</historyevent>
                <historyevent>Two</historyevent>
            </history>
        </processDetails>
    </file>
<files>

此外,一旦检索到如何访问子元素以填充列表框和/或文本框?

1 个答案:

答案 0 :(得分:0)

您的查询存在的问题是,您的第一个file元素与您的子file元素的类型不同。

因此,当您实际执行查询时,您将无法找到子name元素的file属性,并且您将获得null reference exception when you try to invoke the值{ {1}} file` elements。


你似乎想要做的事情并没有多大意义。但也许你想要的东西如下:

property of the child