为了账号安全,请及时绑定邮箱和手机立即绑定

无法使用 c# 从 soap 响应中获取值

无法使用 c# 从 soap 响应中获取值

C#
隔江千里 2022-11-21 16:45:55
我的肥皂反应在下面很安静。<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><ns2:doCommandResponse xmlns:ns2="http://soap.inf.hexing.cn">    <return>&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&lt;ResponseMessage xmlns=&quot;http://iec.ch/TC57/2011/schema/message&quot; xmlns:m=&quot;http://iec.ch/TC57/2011/MeterReadings#&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xsi:schemaLocation=&quot;http://iec.ch/TC57/2011/schema/message Message.xsd&quot;&gt; &lt;Header&gt;   &lt;Verb&gt;created&lt;/Verb&gt;    &lt;Noun&gt;MeterReadings&lt;/Noun&gt;   &lt;Timestamp&gt;2019-03-31T15:54:12+04:30&lt;/Timestamp&gt;  &lt;Source&gt;HES_BASE&lt;/Source&gt; &lt;AsyncReplyFlag&gt;true&lt;/AsyncReplyFlag&gt;&lt;ReplyAddress&gt;http://192.168.15.2:8090/HES/services/DoCommandRequest?wsdl&lt;/ReplyAddress&gt;&lt;AckRequired&gt;true&lt;/AckRequired&gt;  &lt;User&gt;     &lt;UserID&gt;abc&lt;/UserID&gt;  &lt;/User&gt;&lt;Property&gt;  &lt;Name&gt;password&lt;/Name&gt;    &lt;Value&gt;2222&lt;/Value&gt; &lt;/Property&gt; &lt;MessageID&gt;2AB290AE-5DBC-414D-8C5D-70836514E736&lt;/MessageID&gt; &lt;CorrelationID&gt;String&lt;/CorrelationID&gt;&lt;/Header&gt;&lt;Reply&gt;&lt;Result&gt;OK&lt;/Result&gt;&lt;Error&gt;&lt;code&gt;0.0&lt;/code&gt;&lt;/Error&gt;&lt;/Reply&gt;&lt;Payload&gt;&lt;m:MeterReadings&gt;&lt;m:MeterReading&gt;&lt;m:valuesInterval&gt; &lt;m:end&gt;2019-03-31T00:00:00+04:30&lt;/m:end&gt; &lt;m:start&gt;2019-03-01T00:00:00+04:30&lt;/m:start&gt; &lt;/m:valuesInterval&gt; &lt;m:Meter&gt;  &lt;m:Names&gt;        &lt;m:name&gt;37030298060&lt;/m:name&gt;     &lt;m:NameType&gt;       &lt;m:name&gt;28373341367200U&lt;/m:name&gt;    &lt;/m:NameType&gt;  &lt;/m:Names&gt;  &lt;m:mRID&gt;002997004330&lt;/m:mRID&gt;  &lt;/m:Meter&gt;  &lt;m:Readings&gt;从上面的回复中,我想从上面的回复中获取一些数据。下面是我的代码
查看完整描述

2 回答

?
绝地无双

TA贡献1946条经验 获得超4个赞

首先将<return>元素的值放入一个字符串变量中(比方说string returnValue)


然后 XMLreturnValue通过将值传递给以下函数来解码 using。


public static string XmlDecode(string value) {

    var xmlDoc = new XmlDocument();

    xmlDoc.LoadXml("<root>" + value + "</root>");

    return xmlDoc.InnerText;

}

上述函数的返回值是有效的 XML,您可以使用XDocument.Parse或 LINQ to XML 对其进行解析


查看完整回答
反对 回复 2022-11-21
?
森栏

TA贡献1810条经验 获得超5个赞

问题是您的 soap 响应内容是 XML。但 UserID xml 元素被理解为一个字符串——在你的响应内容中,有很多 html 转义字符)。

您需要修复您的服务或通过替换&lt;&gt;,取消转义您的字符串&quot;


查看完整回答
反对 回复 2022-11-21
  • 2 回答
  • 0 关注
  • 79 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信