2015-06-26 65 views
1

我被SOAP API XML性反應就像更改XML響應數組或對象

$data = <users><user id="1028240" enabled="True" mustChangePassword="False"> 
<username><![CDATA[Priye1]]></username> 
<firstName><![CDATA[Priye]]></firstName> 
<middleName></middleName> 
<lastName><![CDATA[Priye]]></lastName> 
<email></email> 
<company></company> 
</users> 

當我通過

$array = simplexml_load_string($data); 

轉換$數據轉換成簡單的XML對象我有對象,但對象不包含任何價值。

變換對象作爲遵循

[用戶] =>數組 ( [用戶] =>數組 ( [0] =>數組 ( [@屬性] =>數組 ( 後[ID] => 1028240 [啓用] =>真 [mustChangePassword] =>假 )

      [username] => Array 
           (
           ) 

          [firstName] => Array 
           (
           ) 

          [middleName] => Array 
           (
           ) 

          [lastName] => Array 
           (
           ) 

          [email] => Array 
           (
           ) 

          [company] => Array 
           (
           ) 

          [address] => Array 
           (
           ) 

          [city] => Array 
           (
           ) 

          [province] => Array 
           (
           ) 
} 

}

+0

你可以放棄的對象,並添加到這個問題? – arkascha

+0

謝謝,但我很困惑:1.您發佈的xml響應的第一個和第二個版本不同。 2.您發佈的輸出是_not_空。那麼這裏有什麼問題? – arkascha

+0

這個問題的格式可以改進。 – Daniel

回答

2

看起來您的xml輸入無效。在這種情況下,如果你沒有任何錯誤檢查與不看,其中顯示錯誤日誌文件,那麼你可能有困難,看到...

下面是一個例子固定內容:

<?php 

$data = <<<EOT 
<users> 
    <user id="1028240" enabled="True" mustChangePassword="False"> 
    <username><![CDATA[Priye1]]></username> 
    <firstName><![CDATA[Priye]]></firstName> 
    <middleName></middleName> 
    <lastName><![CDATA[Priye]]></lastName> 
    <email></email> 
    <company></company> 
    </user> 
</users> 
EOT; 

print_r(simplexml_load_string($data, null, LIBXML_NOCDATA)); 

注添加</user>朝向其封閉user標籤在第二行打開的端部。如果沒有這種修復,你會在CLI或者日誌錯誤日誌文件中得到這個警告:PHP Warning: simplexml_load_string(): Entity: line 9: parser error : expected '>'

此外,您還必須告訴xml解析器應該訪問並解釋所包含的CDATA內容(如果需要)。這是由於這樣的數據實際上不被認爲是xml文檔本身的一部分。您可以通過使用最後的print_r()調用中顯示的標誌LIBXML_NOCDATA來實現。

該腳本的輸出是:

SimpleXMLElement Object 
(
    [user] => SimpleXMLElement Object 
    (
     [@attributes] => Array 
      (
       [id] => 1028240 
       [enabled] => True 
       [mustChangePassword] => False 
      ) 

     [username] => Priye1 
     [firstName] => Priye 
     [middleName] => SimpleXMLElement Object 
      (
      ) 

     [lastName] => Priye 
     [email] => SimpleXMLElement Object 
      (
      ) 

     [company] => SimpleXMLElement Object 
      (
      ) 

    ) 

) 
+0

@ arkascha感謝您的幫助:) –

+0

很高興我可以幫助:-)也許你想upvote或接受我的回答:-) – arkascha

+0

@ arkascha謝謝!!,它工作正常。 –