2015-06-03 50 views
0

下面得到的屬性是我使用的XML轉換爲數組在simplexml_load_string

$xml = '<xml><CodeshareInfo OperatingCarrier="EY" OperatingFlightNumber="269">ETIHAD AIRWAYS</CodeshareInfo></xml>'; 
$obj  = simplexml_load_string($xml); // Parse XML 
$obj->registerXPathNamespace("soap", "http://www.w3.org/2003/05/soap-envelope"); 
$array  = json_decode(json_encode($obj), true); // Convert to array 

當我與父節點「XML」

<xml><CodeshareInfo OperatingCarrier="EY" OperatingFlightNumber="269">ETIHAD AIRWAYS</CodeshareInfo></xml> 

我得到這個結果,嘗試的功能

Array 
(
    [CodeshareInfo] => ETIHAD AIRWAYS 
) 

但如果我嘗試沒有父節點「xml」

<CodeshareInfo OperatingCarrier="EY" OperatingFlightNumber="269">ETIHAD AIRWAYS</CodeshareInfo> 

我能得到的屬性和值

Array 
(
    [@attributes] => Array 
     (
      [OperatingCarrier] => EY 
      [OperatingFlightNumber] => 269 
     ) 
    [0] => ETIHAD AIRWAYS 
) 

我應該在更改代碼以獲得與屬性和值作爲我的XML數據輸出作爲一個SOAP請求,一旦我得到我將轉換作爲數組來訪問它的值和屬性。

+0

你不能只是迭代雖然'$ obj'? – chris85

+0

好,如果它是XML的幾行,然後我就已經做到了...但我傳遞到SimpleXML的對象是這是越來越要求生成一個大的XML文件......讓我告訴你,顯然對我是什麼工作..它是一個旅遊門戶網站,我通過肥皂請求獲取航班可用性作爲xml,我將它傳遞給simplexml_load_string並將其轉換爲數組..並且我在xml中提到的是從該巨大的xml中提取的一段字符串,並且這是我不能獲得屬性的地方,而我只得到值... –

+0

小或大,你應該能夠迭代。我會提供一個樣本給你我的意思的示例.. – chris85

回答

0

鑑於所提供的XML,你可以通過它遍歷並拉出屬性和值。

<?php 
$xml = '<xml><CodeshareInfo OperatingCarrier="EY" OperatingFlightNumber="269">ETIHAD AIRWAYS</CodeshareInfo></xml>'; 
$obj  = simplexml_load_string($xml); // Parse XML 
$obj->registerXPathNamespace("soap", "http://www.w3.org/2003/05/soap-envelope"); 
foreach($obj as $ob) { 
    echo $ob['OperatingCarrier'] . "\n"; 
    echo $ob . "\n"; 
    echo $ob['OperatingFlightNumber'] . "\n"; 
} 

輸出:

EY
阿提哈德航空公司

+0

非常感謝你......它的工作......我認爲這條線的地方有錯,我將$ obj轉換爲數組......'$ array \t = json_decode(json_encode($ obj),true);' –