我需要使用PHP SoapClient解析一些xml。 响应似乎也包含xsd。 以下是我得到的回复示例。 我欢迎你的意见和贡献。非常感谢你。
<xs:schema xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="NewDataSet">
<xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:MainDataTable="PRV_Servicios" msdata:UseCurrentLocale="true">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="PRV_Servicios">
<xs:complexType>
<xs:sequence>
<xs:element name="idPRV_Servicios" type="xs:int" minOccurs="0"/>
<xs:element name="Servicios" type="xs:string" minOccurs="0"/>
<xs:element name="Filler" type="xs:string" minOccurs="0"/>
<xs:element name="MarkupAvizo" type="xs:double" minOccurs="0"/>
<xs:element name="MarkUpRest" type="xs:double" minOccurs="0"/>
<xs:element name="MarkUp" type="xs:double" minOccurs="0"/>
<xs:element name="IVA" type="xs:short" minOccurs="0"/>
<xs:element name="idPRV_ServiciosIVA" type="xs:int" minOccurs="0"/>
<xs:element name="idEMP_Monedas" type="xs:int" minOccurs="0"/>
<xs:element name="TipoCalculo1" type="xs:short" minOccurs="0"/>
<xs:element name="TipoCalculo2" type="xs:short" 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">
<DocumentElement xmlns="">
<PRV_Servicios diffgr:id="PRV_Servicios1" msdata:rowOrder="0">
<idPRV_Servicios>1</idPRV_Servicios>
<Servicios>Aereo</Servicios>
<Filler/>
<MarkupAvizo>0</MarkupAvizo>
<MarkUpRest>0</MarkUpRest>
<MarkUp>0</MarkUp>
<IVA>1</IVA>
<idPRV_ServiciosIVA>0</idPRV_ServiciosIVA>
<idEMP_Monedas>1</idEMP_Monedas>
<TipoCalculo1>1</TipoCalculo1>
<TipoCalculo2>1</TipoCalculo2>
</PRV_Servicios>
<PRV_Servicios diffgr:id="PRV_Servicios2" msdata:rowOrder="1">
<idPRV_Servicios>2</idPRV_Servicios>
<Servicios>Autos</Servicios>
<Filler/>
<MarkupAvizo>8.38</MarkupAvizo>
<MarkUpRest>1</MarkUpRest>
<MarkUp>10</MarkUp>
<IVA>1</IVA>
<idPRV_ServiciosIVA>0</idPRV_ServiciosIVA>
<idEMP_Monedas>1</idEMP_Monedas>
<TipoCalculo1>1</TipoCalculo1>
<TipoCalculo2>1</TipoCalculo2>
</PRV_Servicios>
<PRV_Servicios diffgr:id="PRV_Servicios3" msdata:rowOrder="2">
<idPRV_Servicios>3</idPRV_Servicios>
<Servicios>Cruceros</Servicios>
<Filler/>
<MarkupAvizo>12.5</MarkupAvizo>
<MarkUpRest>5.5</MarkUpRest>
<MarkUp>15</MarkUp>
<IVA>1</IVA>
<idPRV_ServiciosIVA>0</idPRV_ServiciosIVA>
<idEMP_Monedas>1</idEMP_Monedas>
<TipoCalculo1>1</TipoCalculo1>
<TipoCalculo2>1</TipoCalculo2>
</PRV_Servicios>
<PRV_Servicios diffgr:id="PRV_Servicios4" msdata:rowOrder="3">
<idPRV_Servicios>4</idPRV_Servicios>
<Servicios>Excursiones</Servicios>
<Filler/>
<MarkupAvizo>0</MarkupAvizo>
<MarkUpRest>0</MarkUpRest>
<MarkUp>0</MarkUp>
<IVA>0</IVA>
<idPRV_ServiciosIVA>0</idPRV_ServiciosIVA>
<idEMP_Monedas>2</idEMP_Monedas>
<TipoCalculo1>0</TipoCalculo1>
<TipoCalculo2>0</TipoCalculo2>
</PRV_Servicios>
<PRV_Servicios diffgr:id="PRV_Servicios5" msdata:rowOrder="4">
<idPRV_Servicios>5</idPRV_Servicios>
<Servicios>Hoteles</Servicios>
<Filler/>
<MarkupAvizo>12.5</MarkupAvizo>
<MarkUpRest>5.5</MarkUpRest>
<MarkUp>15</MarkUp>
<IVA>0</IVA>
<idPRV_ServiciosIVA>0</idPRV_ServiciosIVA>
<idEMP_Monedas>2</idEMP_Monedas>
<TipoCalculo1>1</TipoCalculo1>
<TipoCalculo2>2</TipoCalculo2>
</PRV_Servicios>
<PRV_Servicios diffgr:id="PRV_Servicios6" msdata:rowOrder="5">
<idPRV_Servicios>6</idPRV_Servicios>
<Servicios>Otros</Servicios>
<Filler/>
<MarkupAvizo>12.5</MarkupAvizo>
<MarkUpRest>5.5</MarkUpRest>
<MarkUp>15</MarkUp>
<IVA>0</IVA>
<idPRV_ServiciosIVA>0</idPRV_ServiciosIVA>
<idEMP_Monedas>2</idEMP_Monedas>
<TipoCalculo1>2</TipoCalculo1>
<TipoCalculo2>2</TipoCalculo2>
</PRV_Servicios>
<PRV_Servicios diffgr:id="PRV_Servicios7" msdata:rowOrder="6">
<idPRV_Servicios>7</idPRV_Servicios>
<Servicios>Trenes</Servicios>
<Filler/>
<MarkupAvizo>15.5</MarkupAvizo>
<MarkUpRest>5.5</MarkUpRest>
<MarkUp>22</MarkUp>
<IVA>1</IVA>
<idPRV_ServiciosIVA>0</idPRV_ServiciosIVA>
<idEMP_Monedas>1</idEMP_Monedas>
<TipoCalculo1>1</TipoCalculo1>
<TipoCalculo2>1</TipoCalculo2>
</PRV_Servicios>
<PRV_Servicios diffgr:id="PRV_Servicios8" msdata:rowOrder="7">
<idPRV_Servicios>8</idPRV_Servicios>
<Servicios>Buses</Servicios>
<Filler/>
<MarkupAvizo>15.5</MarkupAvizo>
<MarkUpRest>10</MarkUpRest>
<MarkUp>21</MarkUp>
<IVA>2</IVA>
<idPRV_ServiciosIVA>0</idPRV_ServiciosIVA>
<idEMP_Monedas>1</idEMP_Monedas>
<TipoCalculo1>1</TipoCalculo1>
<TipoCalculo2>1</TipoCalculo2>
</PRV_Servicios>
<PRV_Servicios diffgr:id="PRV_Servicios9" msdata:rowOrder="8">
<idPRV_Servicios>9</idPRV_Servicios>
<Servicios>Global</Servicios>
<Filler/>
<MarkupAvizo>0</MarkupAvizo>
<MarkUpRest>0</MarkUpRest>
<MarkUp>0</MarkUp>
<IVA>1</IVA>
<idPRV_ServiciosIVA>0</idPRV_ServiciosIVA>
<idEMP_Monedas>1</idEMP_Monedas>
<TipoCalculo1>1</TipoCalculo1>
<TipoCalculo2>1</TipoCalculo2>
</PRV_Servicios>
<PRV_Servicios diffgr:id="PRV_Servicios10" msdata:rowOrder="9">
<idPRV_Servicios>10</idPRV_Servicios>
<Servicios>Traslados</Servicios>
<Filler/>
<MarkupAvizo>12.5</MarkupAvizo>
<MarkUpRest>5.5</MarkUpRest>
<MarkUp>15</MarkUp>
<IVA>0</IVA>
<idPRV_ServiciosIVA>0</idPRV_ServiciosIVA>
<idEMP_Monedas>2</idEMP_Monedas>
<TipoCalculo1>0</TipoCalculo1>
<TipoCalculo2>0</TipoCalculo2>
</PRV_Servicios>
<PRV_Servicios diffgr:id="PRV_Servicios11" msdata:rowOrder="10">
<idPRV_Servicios>11</idPRV_Servicios>
<Servicios>Cena Show</Servicios>
<Filler/>
<MarkupAvizo>0</MarkupAvizo>
<MarkUpRest>0</MarkUpRest>
<MarkUp>0</MarkUp>
<IVA>1</IVA>
<idPRV_ServiciosIVA>0</idPRV_ServiciosIVA>
<idEMP_Monedas>1</idEMP_Monedas>
<TipoCalculo1>0</TipoCalculo1>
<TipoCalculo2>0</TipoCalculo2>
</PRV_Servicios>
<PRV_Servicios diffgr:id="PRV_Servicios12" msdata:rowOrder="11">
<idPRV_Servicios>12</idPRV_Servicios>
<Servicios>Paquetes</Servicios>
<Filler/>
<MarkupAvizo>0</MarkupAvizo>
<MarkUpRest>0</MarkUpRest>
<MarkUp>0</MarkUp>
<IVA>1</IVA>
<idPRV_ServiciosIVA>0</idPRV_ServiciosIVA>
<idEMP_Monedas>2</idEMP_Monedas>
<TipoCalculo1>0</TipoCalculo1>
<TipoCalculo2>0</TipoCalculo2>
</PRV_Servicios>
<PRV_Servicios diffgr:id="PRV_Servicios13" msdata:rowOrder="12">
<idPRV_Servicios>13</idPRV_Servicios>
<Servicios>Asistencia</Servicios>
<Filler/>
<MarkupAvizo>0</MarkupAvizo>
<MarkUpRest>0</MarkUpRest>
<MarkUp>0</MarkUp>
<IVA>1</IVA>
<idPRV_ServiciosIVA>0</idPRV_ServiciosIVA>
<idEMP_Monedas>1</idEMP_Monedas>
<TipoCalculo1>1</TipoCalculo1>
<TipoCalculo2>1</TipoCalculo2>
</PRV_Servicios>
<PRV_Servicios diffgr:id="PRV_Servicios14" msdata:rowOrder="13">
<idPRV_Servicios>14</idPRV_Servicios>
<Servicios>Guia</Servicios>
<Filler/>
<MarkupAvizo>0</MarkupAvizo>
<MarkUpRest>0</MarkUpRest>
<MarkUp>0</MarkUp>
<IVA>1</IVA>
<idPRV_ServiciosIVA>0</idPRV_ServiciosIVA>
<idEMP_Monedas>1</idEMP_Monedas>
<TipoCalculo1>1</TipoCalculo1>
<TipoCalculo2>1</TipoCalculo2>
</PRV_Servicios>
<PRV_Servicios diffgr:id="PRV_Servicios15" msdata:rowOrder="14">
<idPRV_Servicios>15</idPRV_Servicios>
<Servicios>Extras</Servicios>
<Filler/>
<MarkupAvizo>0</MarkupAvizo>
<MarkUpRest>0</MarkUpRest>
<MarkUp>0</MarkUp>
<IVA>0</IVA>
<idPRV_ServiciosIVA>0</idPRV_ServiciosIVA>
<idEMP_Monedas>2</idEMP_Monedas>
<TipoCalculo1>0</TipoCalculo1>
<TipoCalculo2>0</TipoCalculo2>
</PRV_Servicios>
</DocumentElement>
</diffgr:diffgram>
答案 0 :(得分:5)
试试这个
<?php
$wsdl = "http://192.168.0.120/Service.asmx?WSDL";
//Credenciales
$credenciales = array(); //parametros de la llamada
$credenciales["Usuario"] = "username";
$credenciales["Password"] = "pass";
//Fin de Credenciales
$respuesta = new SoapClient($wsdl);
$consulta = $respuesta->Consulta_Servicios($credenciales);
$pattern = '/<xs:schema.*<\/xs:schema>/';
$xml = preg_replace($pattern, '', $consulta->Consulta_ServiciosResult->any);
$response = simplexml_load_string($xml);
foreach ($response->DocumentElement->PRV_Servicios as $servicio) {
echo '----------------------------<br>';
echo 'idPRV_Servicios = ' . $servicio->idPRV_Servicios . '<br>';
echo 'Servicios = ' . $servicio->Servicios . '<br>';
echo 'Filler = ' . $servicio->Filler . '<br>';
echo 'MarkupAvizo = ' . $servicio->MarkupAvizo . '<br>';
echo 'MarkUpRest = ' . $servicio->MarkUpRest . '<br>';
echo 'MarkUp = ' . $servicio->MarkUp . '<br>';
echo 'IVA = ' . $servicio->IVA . '<br>';
echo 'idPRV_ServiciosIVA = ' . $servicio->idPRV_ServiciosIVA . '<br>';
echo 'idEMP_Monedas = ' . $servicio->idEMP_Monedas . '<br>';
echo 'TipoCalculo1 = ' . $servicio->TipoCalculo1 . '<br>';
echo 'TipoCalculo2 = ' . $servicio->TipoCalculo2 . '<br>';
}
?>