我正在尝试针对Web服务调用SOAP调用,并检索记录。我能够检索名称空间为b的记录。但是无法进一步从命名空间c或d中检索。在下面的例子中,我创建了一个XDocument,它是一个SOAP信封。这是从Web服务调用方法或函数。这会产生多个记录。我想要显示城市和州以及姓名。
<s:Envelope>
<s:Header>
<h:MessageHeader></h:MessageHeader>
</s:Header>
<s:Body>
<a:Name>ABC</a:AccountName>
<a:Value xmlns:b='http://'>
<b:Address xmlns:c='http://'>
<c:City>Mumbai</c:City>
<c:CountryCode i:nil='true'/>
<c:County i:nil='true'/>
<c:StateOrProvinceCode>MH</c:StateOrProvinceCode>
<c:Street1>120 ABCD</c:Street1>
<c:Street2 i:nil='true'/>
<c:ZipOrPostalCode i:nil='true'/>
</b:Address>
</s:Body>
</s:Envelope>
我正在尝试调用函数来检索与名称匹配的客户端。所以我添加了循环,通过它我可以拥有客户端中每个客户端的名称,地址。我能够为每个客户检索一个名称,但不能显示城市和州。请寻求帮助。
var doc = XDocument.parse(result.content.ReadAsStringAsunc().Result);
//retrieving all client
var clients = from c in doc.Element(s+"Envelope")
.Elements(s+"Body")
.Element(e+"Get_Eesponse")
.Element(e+"Get_Result")
.Element(b+"Client")
select new
{
Name = (string)c.Element(b+"Name"),
//want to retrieve a city and state
Address = from p in c.Element(b+"Value") where p.element("city") != null select p
};
clients.Dump(); // I am trying all to display list here
答案 0 :(得分:0)
应该这样:
.Element(e+"Get_Eesponse")
是这样的:
.Element(e+"Get_Response")
而不是:
p.element("city")
应该是这样的:
p.Element(c+"City")