2012-02-28 99 views
0

我一直在尋找一個解決方案,這幾個小時,但似乎沒有工作,我讀http://www.sitepoint.com/simplexml-and-namespaces/,但它似乎並沒有爲我工作。爲什麼我不能用SimpleXML解析這個SOAP響應?

這裏是XML我試圖解析:

<?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> 
    <FlokkurResponse xmlns="http://www2.ksi.is/vefthjonustur/mot/"> 
     <FlokkurSvar> 
     <ArrayFlokkur> 
      <Flokkur> 
      <FlokkurHeiti>1. flokkur</FlokkurHeiti> 
      <FlokkurNumer>113</FlokkurNumer> 
      </Flokkur> 
      <Flokkur> 
      <FlokkurHeiti>2. flokkur</FlokkurHeiti> 
      <FlokkurNumer>109</FlokkurNumer> 
      </Flokkur> 
      <Flokkur> 
      <FlokkurHeiti>3. flokkur</FlokkurHeiti> 
      <FlokkurNumer>124</FlokkurNumer> 
      </Flokkur> 
     </ArrayFlokkur> 
     <VillaNumer>0</VillaNumer> 
     </FlokkurSvar> 
    </FlokkurResponse> 
    </soap:Body> 
</soap:Envelope> 

我想要做的就是讓每個FlokkurHeiti的價值,所以我想我能做到這一點:

foreach ($xml->Flokkur as $x) { 
    echo $x->FlokkurHeiti.'<br/>'; 
} 

由於你可以看到FLokkur和FlokkurHeiti都沒有任何命名空間或屬性,但我沒有得到任何輸出。

我也試過

$t = $xml->children("http://schemas.xmlsoap.org/soap/envelope/")->Body->FlokkurResponse->children("http://www2.ksi.is/vefthjonustur/mot/")->FlokkurSvar->ArrayFlokkur->Flokkur; 
foreach ($t as $x) { 
    echo $x->FlokkurHeiti.'<br/>'; 
} 

但是得到節點不復存在警告

有人能幫忙,謝謝

回答

0

正如你所看到的既不FLokkur也不FlokkurHeiti有任何命名空間

其實他們命名空間:xmlns="http://www2.ksi.is/vefthjonustur/mot/"

也許你可以看看到:http://www.w3.org/TR/REC-xml-names/