0

我已经尝试阅读其他教程和关于此的 SO 回复,但我似乎无法使其工作:/

我能够发出 SOAP 请求并获得响应,但我似乎无法解析响应。

$result = $client->GetAllAttributes($params);

生成的响应 xml 是:

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
 <soap:Body>
  <GetAllAttributesResponse xmlns="http://connect2.askadmissions.net/webservices/">
    <GetAllAttributesResult>
     <result>
      <code>1</code>
       <ErrorMessage />
       <returndata>
         <attributes>
           <attribute>
            <type>attribute</type>
            <level />
            <name>text1321</name>
            <mappingname><![CDATA[Extra-Curricular Interest]]></mappingname>
            <datatype>Varchar2</datatype>
            <size>35</size>
            <validationexp />
           </attribute>
           <attribute> (same as above, several of these are returned</attribute>
         </attributes>
       </returndata>
      </result>
     </GetAllAttributesResult>
    </GetAllAttributesResponse>
   </soap:Body>
  </soap:Envelope>
 </xml>

我试过了

$xml = simplexml_load_string($client->__getLastResponse());
print_r($xml);

但它只是打印“SimpleXMLElement Object ()”

我试过了

$responseXML = $client->__getLastResponse();
        $xml = simplexml_load_string($responseXML);
        $xml->registerXPathNamespace('soap', 'http://schemas.xmlsoap.org/soap/envelope/');
        $xml->registerXPathNamespace('hob', 'http://connect2.askadmissions.net/webservices/');
        $item = $xml->xpath('//hob:GetAllAttributesResult');
        print_r($item);

我得到一个数组

Array
(
[0] => SimpleXMLElement Object
    (
        [0] => <result><code>1</code><ErrorMessage /><returndata><attributes><attribute>    <type>attribute</type><level />

等(数组很长)

当我尝试进一步进入树时,我的问题就出现了。如果我做

$item = $xml->xpath('//hob:GetAllAttributesResult/hob:result');

或者

$item = $xml->xpath('//hob:GetAllAttributesResult/hob:code');

我最终得到一个空数组。

我如何进一步进入树?

非常感谢您的帮助。

4

1 回答 1

0

要访问元素的值,您需要访问数组的第一个元素。您可能需要将其转换为字符串以获取字符串值,例如在您的示例中您可以执行以下操作:

$item = $xml->xpath('//hob:GetAllAttributesResult/hob:result/hob:code');
print_r((string)$item[0]);
于 2013-08-27T22:43:29.847 回答