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

无法在Yii2中将Soap响应字符串转换为xml

无法在Yii2中将Soap响应字符串转换为xml

PHP
呼啦一阵风 2021-04-27 14:23:00
我有一个肥皂要求。我能够发送请求并获得字符串响应。现在,我想将其转换为XML并从中获取所需的数据。回复string(1383) "<?xml version="1.0" encoding="UTF-8"?><ResponseMessage xmlns:ns="http://iec.ch/TC57/2011/schema/message" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://iec.ch/TC57/2011/schema/message Message.xsd"><Header>    <Verb>reply</Verb>    <Noun>EndDeviceControls</Noun>    <Revision>2.0</Revision>    <Timestamp>2019-05-04T10:39:11+04:30</Timestamp>    <Source>HES-BSTC</Source>    <AsyncReplyFlag>true</AsyncReplyFlag>    <ReplyAddress>http://ip:port/AmiWeb/services/Metering</ReplyAddress>    <User>        <UserID>user</UserID>    </User>    <MessageID>6C3F761B-A1EC-4EBE-BB49-67B720C5AE62</MessageID>    <CorrelationID>1001</CorrelationID>    <Property>        <Name>password</Name>        <Value>password</Value>    </Property>    <Property>        <Name>timeout(m)</Name>        <Value>30</Value>    </Property></Header><Reply>    <Result>OK</Result>    <Error>        <code>0.3</code>    </Error></Reply></ResponseMessage>"输出object(SimpleXMLElement)#121 (0) { }输出为空。现在我想要两件事将字符串转换为XML从返回的XML中,我想<AsyncReplyFlag>true</AsyncReplyFlag>从响应中获取的值
查看完整描述

3 回答

?
Cats萌萌

TA贡献1805条经验 获得超9个赞

尝试使用输出一个SimpleXMLElementvar_dump()并不是一个好主意,而且正如您所看到的那样-付出的代价不多。

如果您只想查看已加载的XML,请使用...

echo $xml->asXML();

这将向您显示XML已加载好,因此要输出该字段,您的结果就是

$xml = simplexml_load_string($response);
echo $xml->Header->AsyncReplyFlag;


查看完整回答
反对 回复 2021-05-28
?
幕布斯7119047

TA贡献1794条经验 获得超8个赞

使用XPath查询


$xml = new SimpleXMLElement($xmlData);

echo $xml->xpath('//AsyncReplyFlag')[0];

或者


您可以使用 xml_parser_create


$p = xml_parser_create();

xml_parse_into_struct($p, $xml, $values, $indexes);// $xml containing the XML

xml_parser_free($p);


echo $values[12]['value'];

有关其他详细信息,您可以 print_r($values)


查看完整回答
反对 回复 2021-05-28
  • 3 回答
  • 0 关注
  • 145 浏览

添加回答

举报

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