如何访问这个嵌套的 XElement?

How to access this nested XElement?

希望您能提供帮助,这是我尝试从中读取数据的 SOAP 响应消息:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <soap:Body>
      <GetVehicleImageDocDescriptorsResponse xmlns="http://kyle/webservices/">
         <GetVehicleImageDocDescriptorsResult>
            <VehicleImageDocDescriptor>
               <Id>91222</Id>
               <Epoch>2014-09-12T16:46:22.643</Epoch>
               <ImageSetId>172308</ImageSetId>
               <ImageMetadata>
                  <Group>public</Group>
                  <POV>Beauty Master</POV>
                  <RightHandDrive>false</RightHandDrive>
                  <ImageHashCode>1123</ImageHashCode>
               </ImageMetadata>
            </VehicleImageDocDescriptor>
            <VehicleImageDocDescriptor>
               <Id>123</Id>
               ...REPEATING....

这是我必须访问这些字段中的值的代码片段:

XDocument doc = XDocument.Parse(getVehicleImageDocDescriptorsResult);
XNamespace ns = "http://kyle/webservices/";
IEnumerable<XElement> responses = doc.Descendants(ns + "VehicleImageDocDescriptor");


foreach (XElement response in responses)
{
    pov = (string)response.Element(ns + "POV");
    epoch = (string)response.Element(ns + "Epoch");
    imageSetId = (string)response.Element(ns + "ImageSetId");
    parsedDate = DateTime.Parse(epoch);
}
                

这适用于 'epoch'、'imageSetId' 但不适用于 'pov',我假设是因为 'pov' 字段缩进了它需要的另一个级别'address' 的额外级别,如果你愿意的话,我已经尝试了几个小时的不同想法并且似乎无法检索值,我什至尝试过将完整的命名空间作为变量并在 'pov's 'element' 括号但这也不起作用。

谁能给我一些想法吗?

非常感谢, 凯尔.

在您的 XML 中,POV 嵌套在 ImageMetadata 中。这应该有效:

foreach (XElement response in responses)
{
    var imageMetadata = response.Element(ns + "ImageMetadata");
    var pov = (string)imageMetadata.Element(ns + "POV");

    var epoch = (string)response.Element(ns + "Epoch");
    var imageSetId = (string)response.Element(ns + "ImageSetId");
    var parsedDate = DateTime.Parse(epoch);
}