php-如何从对象获取xml属性

时间:2019-05-19 14:39:43

标签: php xml

网络服务向我返回此代码-

    global  $s;
    global  $params;
    $s = new soapclient($conDetails['url'],array('wsdl'));
    $params = new stdClass;
    $paramsStr = ' 
                    <LoginInput>
                        <LoginRec Action="SuppAuthn" UserEmail="'.$email.'" UserPass="'.$password.'" />
                    </LoginInput>
                ';
    $params->xmlRequest = $paramsStr;

    $result = $s->__call("SubmitXmlString",array($params));

当我打印结果时,它会得到:

echo "<pre>".(var_dump($result,true))."</pre>";


object(stdClass)#3 (1) { 
    ["SubmitXmlStringResult"]=> string(496) 
    "<LoginOutput>
        <Login UsrId="XX" UsrName="Some Name" SessionId="10" supplierCode="2" supplierName="Supp name" supplierEmail=""/>
        <Countries>
            <country code="DE" name="Germany"/>
            <country code="ES" name="Spain"/>
            <country code="FR" name="France"/>
        </Countries>
    </LoginOutput>
" } bool(true) 

如何获取结果的“ supplierCode”值?

2 个答案:

答案 0 :(得分:0)

object(stdClass)#3 (1) { 
    ["SubmitXmlStringResult"]=> string(496) 

因此,您有一个对象,其属性名为SubmitXmlStringResult,其中包含有效的XML string。因此,您可以对该数据使用simplexml_load_string。有了它之后,就可以看到supplierCodeLogin元素的属性。因此,您可以通过以下方式获得该信息:

<?php
// Recreating your variable
$obj = new stdClass();
$obj->SubmitXmlStringResult =<<<ENDXML
<LoginOutput>
    <Login UsrId="XX" UsrName="Some Name" SessionId="10" supplierCode="2" supplierName="Supp name" supplierEmail=""/>
    <Countries>
        <country code="DE" name="Germany"/>
        <country code="ES" name="Spain"/>
        <country code="FR" name="France"/>
    </Countries>
</LoginOutput>
ENDXML;

// Load the XML from the object
$xml = simplexml_load_string($obj->SubmitXmlStringResult);
// Get supplierCode attribute from Login element
$supplierCode = $xml->Login->attributes()['supplierCode'];

答案 1 :(得分:0)

您只需要从类对象中获取XML,并将其设置在变量中即可。然后,您需要创建一个XML对象,然后可以按以下方式访问supplierCode

$xmlString = $result->SubmitXmlStringResult;

$xml = simplexml_load_string($xmlString);
echo $xml->Login[0]->attributes()->supplierCode; 

希望对您有帮助!