【问题标题】:How to parse SOAP Response如何解析 SOAP 响应
【发布时间】:2012-07-14 00:42:40
【问题描述】:

我有以下字符串,我想从这个字符串中解析用户名和密码...

 $xmlstring='<soap-env:envelope xmlns:ns1="http://back.com/"
            xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
            xmlns:soap-enc="http://schemas.xmlsoap.org/soap/encoding/" 
            xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
            <soap-env:header></soap-env:header>
            <soap-env:body>
               <ns1:createuserresponse>
                  <username>qqq_d481</username>
                  <password>sdfdssdfds</password>
                  <result>
                     <succeeded>true</succeeded>
                     <errorcode>0</errorcode>
                     <errortext></errortext>
                  </result>
               </ns1:createuserresponse>
            </soap-env:body>
           </soap-env:envelope>';

请提出建议。

上面的字符串是 SOAP 响应

但如果我使用:

$xmlstring='<soap-env:envelope>
<soap-env:header></soap-env:header>
<soap-env:body>
    <ns1:createuserresponse>
        <username>qqq_d481</username>
        <password>sdfdssdfds</password>
        <result>
            <succeeded>true</succeeded>
            <errorcode>0</errorcode>
            <errortext></errortext>
        </result>
    </ns1:createuserresponse>
</soap-env:body></soap-env:envelope>';



echo $xmltoparse= $xmlstring;
$xml = simplexml_load_string($xmltoparse);
print_r($xml); 

然后就可以正常使用了

【问题讨论】:

  • 您确定您的示例有效吗?因为你在你的例子中解析"my xml string"

标签: php soap xml-parsing


【解决方案1】:

也许您可以使用 PHP5 Soap Client,而不是 simple_xml_parser 按照这里的建议How to parse SOAP XML?

【讨论】:

    【解决方案2】:

    不确定我是否完全理解您要做什么,但可能是这样的?

    ** 未经测试的代码,但可能会有所帮助

    public function parseLoginResponse($loginResponse)
    {
        $match = array(
            'username' => 'username',
            'password' => 'password',
            'succeeded' => 'succeeeded',
            'errortext' => 'errortext'
        );
    
        $this->_match($match, $loginResponse);
    
        return array(
            'user' => $this->username,
            'pass' => $this->password,
            'success' => $this->succeeded,
            'error' => $this->errortext
        );
    }
    

    【讨论】:

      【解决方案3】:

      尝试使用以下 asXML 函数将为您提供来自

      的 xml 格式字符串

      print_r(htmlentities($xmldata->asXML()));

      欲了解更多信息,请查看以下链接

      Simplexml_load_string($string) returns an empty object but $string contains xml? code below

      【讨论】:

        猜你喜欢
        • 2020-04-22
        • 2012-07-11
        • 2013-04-09
        • 1970-01-01
        • 2012-09-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多