[英]Parsing Soap Response in PHP?
有人可以幫我解析以下肥皂響應到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_string():名稱空間錯誤:無法解析QName':complexType'
$sxe = simplexml_load_string($above_xml);
print_r($sxe);
die();
我不確定如何按原樣解析原始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
您正在傳遞字符串,這就是為什么您應該使用以下功能:
SimpleXMLElement($above_xml); To simplexml_load_string($above_xml);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.