我解析HTML内容作为SOAP响应,但我不能在客户端检索。
这是我用来解析SOAP响应的PHP代码:
$obj = simplexml_load_string(read_file('../soap.xml'));
var_dump($obj->children('http://schemas.xmlsoap.org/soap/envelope/'));
这里是SOAP响应:
<?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>
<GetDetailsResponse xmlns="http://192.168.2.34:180/">
<GetDetailsResult><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
</GetDetailsResult>
</GetDetailsResponse>
</soap:Body>
</soap:Envelope>
它显示了以下错误:
A PHP Error was encountered
Severity: Warning
Message: simplexml_load_string(): Entity: line 1: parser error : XML declaration allowed only at the start of the document
Filename: controller.php
Line Number: 60
A PHP Error was encountered
Severity: Warning
Message: simplexml_load_string():
A PHP Error was encountered
Severity: Warning
Message: simplexml_load_string(): ^
Filename: controller.php
Line Number: 60
请帮我用PHP解析呢?
什么是的var_dump输出($ obj->儿童( ' http://schemas.xmlsoap.org/soap/envelope/ '));
我对于如何解析SOAP响应一个简单的解决方案
我有XML resopnse文件
<?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>
<xyzResponse xmlns="http://tempuri.org/">
<xyzResult>
<xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="Table">
<xs:complexType>
<xs:sequence>
<xs:element name="myCityID" type="xs:int" minOccurs="0" />
<xs:element name="myCityName" type="xs:string" minOccurs="0" />
<xs:element name="myLat" type="xs:double" minOccurs="0" />
<xs:element name="myLon" type="xs:double" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
<diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
<NewDataSet xmlns="">
<Table diffgr:id="Table1" msdata:rowOrder="0">
<CityID>1</CityID>
<CityName>Ahmedabad</CityName>
<Lat>23.045839</Lat>
<Lon>72.550578</Lon>
</Table>
<Table diffgr:id="Table2" msdata:rowOrder="1">
<CityID>21</CityID>
<CityName>Amritsar</CityName>
<Lat>31.705603</Lat>
<Lon>74.807337</Lon>
</Table>
</NewDataSet>
</diffgr:diffgram>
</xyzResult>
</xyzResponse>
</soap:Body>
</soap:Envelope>
我只想检索表中的数据,然后下面的代码是使用
$sxe = new SimpleXMLElement($response);//in $response varible its a xml file or xml response
$sxe->registerXPathNamespace('d', 'urn:schemas-microsoft-com:xml-diffgram-v1');
$result = $sxe->xpath("//NewDataSet");
echo "<pre>";
//print_r($result[0]);
foreach ($result[0] as $title) {
print_r($title);
//echo $title->CityID;
}
欲了解更多信息,请访问
https://vaja906programmingworld.wordpress.com/
文章名称:如何解析SOAPResponse使用PHP