如何访问嵌套的XElement?C#读取SOAP响应POV字段失败求解
问题原因
POV节点不属于VehicleImageDocDescriptor的直接子节点,它被嵌套在下级的ImageMetadata节点中,你直接从VehicleImageDocDescriptor节点层级查询POV自然无法匹配到对应节点。同时所有嵌套在http://kyle/webservices/命名空间下的节点,查询时都需要带上相同的命名空间前缀。
修正方案
你只需要先查询到ImageMetadata节点,再从该节点下查询POV即可,修改后的循环代码如下:
foreach (XElement response in responses) { // 先取ImageMetadata子节点 XElement imageMetadata = response.Element(ns + "ImageMetadata"); // 再从ImageMetadata下取POV的值,加空值判断避免异常 pov = (string)imageMetadata?.Element(ns + "POV"); epoch = (string)response.Element(ns + "Epoch"); imageSetId = (string)response.Element(ns + "ImageSetId"); parsedDate = DateTime.Parse(epoch); }
如果你不想逐层查询,也可以直接用Descendants方法在当前节点的所有后代节点中匹配POV,写法更简洁但精准度略低,存在匹配到其他层级重名节点的风险:
pov = (string)response.Descendants(ns + "POV").FirstOrDefault();
内容的提问来源于stack exchange,提问作者Kyle Mann
相关产品推荐
相关产品推荐

