C# 查找在XML中隐藏了几层的元素节点

C# 查找在XML中隐藏了几层的元素节点,c#,asp.net,xml,C#,Asp.net,Xml,我试图从这个xml文件中访问和显示与“capabilities”元素相关的信息。但是,每当我访问capabilities元素时,它都不会返回子元素的正确值。这是我正在使用的xml片段 <Conference> <ActiveSpeaker> <CallId>1</CallId> </ActiveSpeaker> <Call item="62" maxOccurrence=&q

我试图从这个xml文件中访问和显示与“capabilities”元素相关的信息。但是,每当我访问capabilities元素时,它都不会返回子元素的正确值。这是我正在使用的xml片段

<Conference>
    <ActiveSpeaker>
      <CallId>1</CallId>
    </ActiveSpeaker>
    <Call item="62" maxOccurrence="n">
      <BookingId>15909</BookingId>
      <Capabilities>
        <FECC>
          <Mode>On</Mode>
          <NumberOfPresets>0</NumberOfPresets>
          <NumberOfSources>1</NumberOfSources>
          <Source item="1" maxOccurrence="n">
            <Name>n/a</Name>
            <Options>ptzf</Options>
            <SourceId>1</SourceId>
          </Source>
        </FECC>
        <FarendMessage>
          <Mode>Off</Mode>
        </FarendMessage>
        <Hold>True</Hold>
        <IxChannel>
          <Status>Active</Status>
        </IxChannel>
        <Presentation>True</Presentation>
      </Capabilities>
      <Manufacturer>Tandberg</Manufacturer>
      <MicrophonesMuted>False</MicrophonesMuted>
      <SoftwareID>unknown (new?)</SoftwareID>
    </Call>
    <DoNotDisturb>Active</DoNotDisturb>
    <Line item="1" maxOccurrence="n">
      <Mode>Private</Mode>
    </Line>
    <Multipoint>
      <Mode>CUCMMediaResourceGroupList</Mode>
    </Multipoint>
    <Presentation>
      <CallId>62</CallId>
      <Mode>Receiving</Mode>
    </Presentation>
    <SpeakerLock>
      <CallId>0</CallId>
      <Mode>Auto</Mode>
    </SpeakerLock>
  </Conference>
我偶尔会返回选项的结果,但其他值始终为空。

请尝试以下代码

            from cp in elem.DescendantsAndSelf("Capabilities")
                 select new
                 {
                     Options = (string)cp.Element("FECC").Element("Source").Element("Options"),
                     Name = (string)cp.Element("FECC").Element("Source").Element("Name"),
                     SourceId = (string)cp.Element("FECC").Element("Source").Element("SourceId"),
                     Mode = (string)cp.Element("FECC").Element("Mode"),
                     Status = (string)cp.Element("IxChannel")
                 };
尝试以下代码

            from cp in elem.DescendantsAndSelf("Capabilities")
                 select new
                 {
                     Options = (string)cp.Element("FECC").Element("Source").Element("Options"),
                     Name = (string)cp.Element("FECC").Element("Source").Element("Name"),
                     SourceId = (string)cp.Element("FECC").Element("Source").Element("SourceId"),
                     Mode = (string)cp.Element("FECC").Element("Mode"),
                     Status = (string)cp.Element("IxChannel")
                 };
请尝试以下操作:

            var results = (from cp in doc.Descendants("Capabilities")
                select new
                {
                    Options = (string)cp.Descendants("Options").FirstOrDefault(),
                    Name = (string)cp.Descendants("Name").FirstOrDefault(),
                    SourceId = (string)cp.Descendants("SourceId").FirstOrDefault(),
                    Mode = (string)cp.Descendants("Mode").FirstOrDefault(),
                    Status = (string)cp.Descendants("Status").FirstOrDefault()
                }).ToList();
请尝试以下操作:

            var results = (from cp in doc.Descendants("Capabilities")
                select new
                {
                    Options = (string)cp.Descendants("Options").FirstOrDefault(),
                    Name = (string)cp.Descendants("Name").FirstOrDefault(),
                    SourceId = (string)cp.Descendants("SourceId").FirstOrDefault(),
                    Mode = (string)cp.Descendants("Mode").FirstOrDefault(),
                    Status = (string)cp.Descendants("Status").FirstOrDefault()
                }).ToList();