SOAP envelope xmlelement directcast не работает
Я успешно потребляю XML-ответ конверта SOAP веб-службы. Я включил сокращенную версию в нижней части.
(#1) Когда я использую:
Dim totalcost1 As String = cfnroot.SelectNodes("GetRateQuoteResponse/GetRateQuoteResult/TotalCharges").Item(0).InnerText
Я получаю значение 2597.01, которое является правильным.
(#2) Когда я использую:
im totalcost As XmlElement = DirectCast(CFLxmldoc.SelectSingleNode("df:GetRateQuoteResponse/df:GetRateQuoteResult/df:TotalCharges", mgr), XmlElement)
Я вообще не получаю никакой ценности.
Я предпочитаю использовать синтаксис #2 и всегда использовал его. Я не могу понять, почему я не получаю никакой ценности от #2. Я считаю, что легче проверить пустые значения или узлы, которых нет. Это мой первый раз, когда я использую конверт SOAP XML. Обычно используйте REST/URL.
<?xml version="1.0"?> <SOAP-ENV:Body xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> <GetRateQuoteResponse xmlns=""> <GetRateQuoteResult> <Date>03/22/2019</Date> <Time>12:06:22</Time> <DeficitAmount>152.84</DeficitAmount> <TotalCharges>2597.01</TotalCharges> <NetCharges>918.91</NetCharges> </GetRateQuoteResult> </GetRateQuoteResponse> </SOAP-ENV:Body>
Что я уже пробовал:
Dim CFLresponse = CFLService.GetRateQuoteXml(CFLRaterequest) Dim ResponseXML As String = CFLresponse.InnerXml Dim CFLxmldoc As XmlDocument = New XmlDocument CFLxmldoc.LoadXml(ResponseXML) Dim mgr As New XmlNamespaceManager(CFLxmldoc.NameTable) mgr.AddNamespace("df", CFLxmldoc.DocumentElement.NamespaceURI) Dim cfnroot As XmlElement = CFLxmldoc.DocumentElement Dim totalcost As XmlElement = DirectCast(CFLxmldoc.SelectSingleNode("df:GetRateQuoteResponse/df:GetRateQuoteResult/df:TotalCharges", mgr), XmlElement) Dim totalcost1 As String = cfnroot.SelectNodes("GetRateQuoteResponse/GetRateQuoteResult/TotalCharges").Item(0).InnerText