Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中解析Soap响应?_Php_Xml_Soap_Simplexml - Fatal编程技术网

在PHP中解析Soap响应?

在PHP中解析Soap响应?,php,xml,soap,simplexml,Php,Xml,Soap,Simplexml,有人能帮我把下面的soap响应解析成HTML表吗 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://optusgis/SFSQR.xsd" xmlns:mstns="http://optusgis/SFSQR.xsd" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="SFSQResponse" target

有人能帮我把下面的soap响应解析成HTML表吗

<xs:schema
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns="http://optusgis/SFSQR.xsd"
    xmlns:mstns="http://optusgis/SFSQR.xsd"
    xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="SFSQResponse"
 targetNamespace="http://optusgis/SFSQR.xsd" attributeFormDefault="qualified" elementFormDefault="qualified"
>
    <xs:element name="SFSQResponse" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
        <xs:complexType
>
            <xs:choice minOccurs="0" maxOccurs="unbounded">
                <xs:element name="SFSQSearch">
                    <xs:complexType>
                        <xs:sequence
>
                            <xs:element name="Name" type="xs:string" minOccurs="0"/>
                            <xs:element name="Description" type="xs:string"
 minOccurs="0"/>
                            <xs:element name="Version" type="xs:string" minOccurs="0"/>
                        </xs:sequence>
                    </xs:complexType
>
                </xs:element>
                <xs:element name="AddressEntered">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="StreetAddress"
 type="xs:string" default="" minOccurs="0"/>
                            <xs:element name="StreetNumber" type="xs:string"/>
                            <xs:element
 name="StreetName" type="xs:string"/>
                            <xs:element name="StreetType" type="xs:string"/>
                            <xs:element name
="StreetSuffix" type="xs:string" minOccurs="0"/>
                            <xs:element name="Suburb" type="xs:string"/>
                            <xs:element
 name="Postcode" type="xs:string"/>
                            <xs:element name="State" type="xs:string"/>
                        </xs:sequence>
                    </xs:complexType
>
                </xs:element>
                <xs:element name="SQResults">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="Location" minOccurs
="0" maxOccurs="unbounded">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element name="Address" minOccurs="0" maxOccurs
="unbounded">
                                            <xs:complexType>
                                                <xs:sequence>
                                                    <xs:element name="StreetNumber" type="xs:string" default=""
 minOccurs="0"/>
                                                    <xs:element name="StreetName" type="xs:string" default="" minOccurs="0"/>
                                                    <xs:element
 name="StreetType" type="xs:string" default="" minOccurs="0"/>
                                                    <xs:element name="StreetSuffix" type="xs
:double" minOccurs="0"/>
                                                    <xs:element name="Suburb" type="xs:string" default="" minOccurs="0"/>
                                                    <xs:element
 name="Postcode" type="xs:string" default="" minOccurs="0"/>
                                                    <xs:element name="State" type="xs:string"
 default="" minOccurs="0"/>
                                                    <xs:element name="Coordinates" minOccurs="0" maxOccurs="unbounded">
                                                        <xs:complexType
>
                                                            <xs:sequence>
                                                                <xs:element name="XCoordinate" type="xs:string" minOccurs="0"/>
                                                                <xs:element name="YCoordinate"
 type="xs:string" minOccurs="0"/>
                                                                <xs:element name="Srid" type="xs:string" minOccurs="0"/>
                                                            </xs:sequence
>
                                                        </xs:complexType>
                                                    </xs:element>
                                                    <xs:element name="OptusResult" minOccurs="0" maxOccurs="unbounded">
                                                        <xs
:complexType>
                                                            <xs:sequence>
                                                                <xs:element name="Code" type="xs:string" minOccurs="0"/>
                                                                <xs:element name="Description"
 type="xs:string" minOccurs="0"/>
                                                            </xs:sequence>
                                                        </xs:complexType>
                                                    </xs:element>
                                                    <xs:element name="EngineResult"
 minOccurs="0" maxOccurs="unbounded">
                                                        <xs:complexType>
                                                            <xs:sequence>
                                                                <xs:element name="Code" type="xs:string"
 minOccurs="0"/>
                                                                <xs:element name="Description" type="xs:string" minOccurs="0"/>
                                                            </xs:sequence>
                                                        </xs:complexType
>
                                                    </xs:element>
                                                </xs:sequence>
                                            </xs:complexType>
                                        </xs:element>
                                        <xs:element name="ServiceQualification" minOccurs
="0" maxOccurs="unbounded">
                                            <xs:complexType>
                                                <xs:sequence>
                                                    <xs:element name="ServiceType" type="xs:string"
 minOccurs="0"/>
                                                    <xs:element name="PnsaName" type="xs:string" minOccurs="0"/>
                                                    <xs:element name="PnsaCode"
 type="xs:string" minOccurs="0"/>
                                                    <xs:element name="TesaName" type="xs:string" minOccurs="0"/>
                                                    <xs:element
 name="TesaCode" type="xs:string" minOccurs="0"/>
                                                    <xs:element name="W2GInCoverage" type="xs:boolean" minOccurs
="0"/>
                                                    <xs:element name="W3GOnStreet" type="xs:string" minOccurs="0"/>
                                                    <xs:element name="W3GInBuilding"
 type="xs:string" minOccurs="0"/>
                                                    <xs:element name="Frequency" type="xs:string" minOccurs="0"/>
                                                    <xs:element
 name="HFCServ" type="xs:string" minOccurs="0"/>
                                                    <xs:element name="Distance" type="xs:double" minOccurs
="0"/>
                                                    <xs:element name="HOME_WIRELESS_BB" type="xs:string" minOccurs="0"/>
                                                    <xs:element name="HOME_WRL_BB_ROLLOUT_DT"
 type="xs:string" minOccurs="0"/>
                                                </xs:sequence>
                                            </xs:complexType>
                                        </xs:element>
                                        <xs:element name="Sap" minOccurs
="0" maxOccurs="unbounded">
                                            <xs:complexType>
                                                <xs:sequence>
                                                    <xs:element name="TesaCode" type="xs:string"
 minOccurs="0"/>
                                                    <xs:element name="OptusCode" type="xs:string" minOccurs="0"/>
                                                    <xs:element name="Address"
 type="xs:string" minOccurs="0"/>
                                                    <xs:element name="Locality" type="xs:string" minOccurs="0"/>
                                                    <xs:element
 name="Postcode" type="xs:string" minOccurs="0"/>
                                                    <xs:element name="State" type="xs:string" minOccurs
="0"/>
                                                </xs:sequence>
                                            </xs:complexType>
                                        </xs:element>
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>
                        </xs:sequence
>
                    </xs:complexType>
                </xs:element>
            </xs:choice>
        </xs:complexType>
    </xs:element>
</xs:schema>
<diffgr:diffgram
    xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1"
    xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"
>
    <SFSQResponse
        xmlns="http://optusgis/SFSQR.xsd">
        <SFSQSearch diffgr:id="SFSQSearch1" msdata:rowOrder
="0" diffgr:hasChanges="inserted">
            <Name>Optus Stir Fry SQ</Name>
            <Description>Optus Internal service qualification
 web service</Description>
            <Version>4.0.01</Version>
        </SFSQSearch>
        <AddressEntered diffgr:id="AddressEntered1"
 msdata:rowOrder="0" diffgr:hasChanges="inserted">
            <StreetAddress/>
            <StreetNumber>20</StreetNumber>
            <StreetName
>BURLINGTON</StreetName>
            <StreetType>RD</StreetType>
            <StreetSuffix/>
            <Suburb>HOMEBUSH</Suburb>
            <Postcode
>2140</Postcode>
            <State>NSW</State>
        </AddressEntered>
        <SQResults diffgr:id="SQResults1" msdata:rowOrder
="0" diffgr:hasChanges="inserted" msdata:hiddenSQResults_Id="0">
            <Location diffgr:id="Location1" msdata
:rowOrder="0" diffgr:hasChanges="inserted" msdata:hiddenLocation_Id="0" msdata:hiddenSQResults_Id="0"
>
                <Address diffgr:id="Address1" msdata:rowOrder="0" diffgr:hasChanges="inserted" msdata:hiddenAddress_Id
="0" msdata:hiddenLocation_Id="0">
                    <StreetNumber>20</StreetNumber>
                    <StreetName>BURLINGTON</StreetName>
                    <StreetType>ROAD</StreetType>
                    <Suburb>HOMEBUSH</Suburb>
                    <Postcode>2140</Postcode>
                    <State>NSW</State>
                    <Coordinates
 diffgr:id="Coordinates1" msdata:rowOrder="0" diffgr:hasChanges="inserted" msdata:hiddenAddress_Id="0"
>
                        <XCoordinate>151.084399</XCoordinate>
                        <YCoordinate>-33.870154</YCoordinate>
                        <Srid>Future Use</Srid>
                    </Coordinates
>
                    <OptusResult diffgr:id="OptusResult1" msdata:rowOrder="0" diffgr:hasChanges="inserted" msdata:hiddenAddress_Id
="0">
                        <Code>10</Code>
                        <Description>Exact or Good Match Found</Description>
                    </OptusResult>
                    <EngineResult diffgr
:id="EngineResult1" msdata:rowOrder="0" diffgr:hasChanges="inserted" msdata:hiddenAddress_Id="0">
                        <Code
>100000</Code>
                        <Description>Exact Match to Street Number and Address</Description>
                    </EngineResult>
                </Address
>
                <ServiceQualification diffgr:id="ServiceQualification1" msdata:rowOrder="0" diffgr:hasChanges="inserted"
 msdata:hiddenLocation_Id="0">
                    <ServiceType>ABC</ServiceType>
                    <PnsaName>SYDNEY</PnsaName>
                    <PnsaCode>02SYDNEY
</PnsaCode>
                    <TesaName>HOMEBUSH</TesaName>
                    <TesaCode>HOME</TesaCode>
                    <W2GInCoverage>true</W2GInCoverage>
                    <W3GOnStreet>RED</W3GOnStreet>
                    <W3GInBuilding>RED</W3GInBuilding>
                    <Frequency>2100</Frequency>
                    <Distance
>475.734085594758</Distance>
                    <HOME_WIRELESS_BB>N</HOME_WIRELESS_BB>
                    <HOME_WRL_BB_ROLLOUT_DT/>
                </ServiceQualification
>
                <Sap diffgr:id="Sap1" msdata:rowOrder="0" diffgr:hasChanges="inserted" msdata:hiddenLocation_Id="0"
>
                    <TesaCode>HOME</TesaCode>
                    <OptusCode/>
                    <Address/>
                    <Locality/>
                    <Postcode/>
                    <State/>
                </Sap>
            </Location>
        </SQResults
>
    </SFSQResponse>
</diffgr:diffgram>
我试着跟随,但它给了我错误


警告:simplexml_load_字符串:命名空间错误:无法分析中的QName':complexType


您正在传递字符串,这就是您应该使用以下函数的原因:

SimpleXMLElement($above_xml); To simplexml_load_string($above_xml);

我不确定如何按原样解析原始XML—文档中有模式定义。但我所做的是在装载之前先把它剥掉。这并不理想-但它似乎得到了数据

<?php
error_reporting ( E_ALL );
ini_set ( 'display_errors', 1 );

$endSchemaMarker = "</xs:schema>";
$preXML = file_get_contents("stackoverflow.xml");
$endSchema = strpos($preXML, $endSchemaMarker);
$postXML = substr($preXML, $endSchema+strlen($endSchemaMarker));
$xmlData = simplexml_load_string(trim($postXML));
echo "Name=".(string)$xmlData->SFSQResponse->SFSQSearch->Name.PHP_EOL;

我也试过了,你能告诉我如何使用这个对象访问sq结果部分吗?simplexml\u load\u string是否已解决字符串无法解析为XML错误?警告:simplexml\u load\u string:命名空间错误:未能解析QName':complexType'in如果XML字符串中有问题,请在XML验证器中验证。可能是,但这就是我得到的结果以某种方式处理错误响应…:
<?php
error_reporting ( E_ALL );
ini_set ( 'display_errors', 1 );

$endSchemaMarker = "</xs:schema>";
$preXML = file_get_contents("stackoverflow.xml");
$endSchema = strpos($preXML, $endSchemaMarker);
$postXML = substr($preXML, $endSchema+strlen($endSchemaMarker));
$xmlData = simplexml_load_string(trim($postXML));
echo "Name=".(string)$xmlData->SFSQResponse->SFSQSearch->Name.PHP_EOL;
Name=Optus Stir Fry SQ