C# 查找在XML中隐藏了几层的元素节点
我试图从这个xml文件中访问和显示与“capabilities”元素相关的信息。但是,每当我访问capabilities元素时,它都不会返回子元素的正确值。这是我正在使用的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
<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();