猿问

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

我有一个肥皂要求。我能够发送请求并获得字符串响应。现在,我想将其转换为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) { }

输出为空。现在我想要两件事

  1. 将字符串转换为XML

  2. 从返回的XML中,我想<AsyncReplyFlag>true</AsyncReplyFlag>从响应中获取的值


呼啦一阵风
浏览 146回答 3
3回答

Cats萌萌

尝试使用输出一个SimpleXMLElementvar_dump()并不是一个好主意,而且正如您所看到的那样-付出的代价不多。如果您只想查看已加载的XML,请使用...echo&nbsp;$xml->asXML();这将向您显示XML已加载好,因此要输出该字段,您的结果就是$xml&nbsp;=&nbsp;simplexml_load_string($response); echo&nbsp;$xml->Header->AsyncReplyFlag;

幕布斯7119047

使用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 XMLxml_parser_free($p);echo $values[12]['value'];有关其他详细信息,您可以 print_r($values)
随时随地看视频慕课网APP
我要回答