Linq查询不起作用

时间:2015-07-26 21:05:12

标签: c# linq-to-xml

我有一个XML文件,我试图提取使用Linq到XML的信息。您可以在下面找到我正在使用的XML文件。

<PulseViewModel xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/Pulse.Web.Api.External.ApiControllers.PreAlpha.ViewModels">
    <Demographics />
    <Event>
        <Address i:nil="true" />
        <City i:nil="true" />
        <Country i:nil="true" />
        <Description i:nil="true" />
        <EndDateTimeUtc>2015-07-14T16:47:36</EndDateTimeUtc>
        <EstimatedParticipantsHigh>100</EstimatedParticipantsHigh>
        <EstimatedParticipantsLow>1</EstimatedParticipantsLow>
        <EventType i:nil="true" />
        <Location i:nil="true" />
        <Name>Test Event</Name>
        <StartDateTimeUtc>2015-07-14T13:47:36</StartDateTimeUtc>
        <State i:nil="true" />
        <TimeZoneDisplayName>Central Europe Daylight Time (UTC+120)</TimeZoneDisplayName>
        <TimeZoneId>Central Europe Standard Time</TimeZoneId>
        <TimeZoneOffset>120</TimeZoneOffset>
        <Zip i:nil="true" />
    </Event>
</PulseViewModel>

我试图使用以下代码提取名称:

var Questions = myXML.Descendants("Event").Descendants("Name").Select(z => z.Value).FirstOrDefault();
MessageBox.Show(Questions.Count().ToString());

但它一直返回0。

我的查询中有什么问题吗?

感谢任何建议。

1 个答案:

答案 0 :(得分:0)

您需要为元素指定XML默认命名空间:

XNamespace vm = "http://schemas.datacontract.org/2004/07/Pulse.Web.Api.External.ApiControllers.PreAlpha.ViewModels";
var Questions = myXML.Descendants(vm + "Event").Descendants(vm + "Name");  // ...