如何访问这个嵌套的 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);
}
希望您能提供帮助,这是我尝试从中读取数据的 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);
}