我已经尝试阅读其他教程和关于此的 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');
我最终得到一个空数组。
我如何进一步进入树?
非常感谢您的帮助。