2017-09-25 11 views
0

HTML 테이블에 비누를 응답 한 후 구문 분석하는 데 도움이 될 수 있습니까?PHP에서 비누 응답 구문 분석?

<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(); 

답변

1

원본 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 
0

당신이 문자열을 전달하는의를 그 이유는 아래 기능을 사용해야합니다 :

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

제공합니다 ...하지만 데이터를 얻을 것 - 그것은 이상적인 아니에요? – mahen3d

+0

은 simplexml_load_string입니다. "XML로 문자열을 파싱 할 수 없습니다."오류가 발생 했습니까? –

+0

아니야 나에게 diffrente 오류를 준다 – mahen3d