2017-04-15 79 views
0

當我在PHP中使用simplexml_load_string這樣的:丟失數據,當我使用simplexml_load_string()

$response = '<?xml version="1.0" encoding="UTF-8"?> 
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0" xmlns:domain="http://epp.nic.ir/ns/domain-1.0"> 
    <response xmlns:domain="http://epp.nic.ir/ns/domain-1.0"> 
     <result code="1000"> 
      <msg>Command completed successfully</msg> 
     </result> 
     <resData xmlns:domain="http://epp.nic.ir/ns/domain-1.0"> 
      <domain:chkData xmlns:domain="http://epp.nic.ir/ns/domain-1.0"> 
       <domain:cd> 
        <domain:name normalized_name="dsfdsfdsfsdfdffdg" 
           canonized_name="dsfdsfdsfsdfdffdg" tld="ir" avail="1"> 
         dsfdsfdsfsdfdffdg.ir 
        </domain:name> 
       </domain:cd> 
      </domain:chkData> 
     </resData> 
     <trID> 
      <clTRID>TEST-14922533391168726112</clTRID> 
      <svTRID>IRNIC_2017-04-15T15:18:59+04:30_epi</svTRID> 
     </trID> 
    </response> 
</epp>'; 
$a = simplexml_load_string($response); 
var_dump($a); 

當我顯示$a我沒有resData價值,我錯過了這個屬性。 我該如何解決這個問題?

+1

它的命名空間的問題。看看這裏 - https://eval.in/776816我已經寫了一些第一步 – splash58

+0

如果你想獲得任何價值,你可以註冊命名空間並使用Xpath – splash58

回答

0

謝謝@ splash58。
我應該使用命名空間這樣的:

$a = simplexml_load_string($result); 
$ns = $a->getNamespaces(true); 
var_dump($a->response->resData->children($ns['domain'])); 
0

您正在使用的錯誤變量$response並未完全初始化。使用$result其中包含完整的html字符串而不是$response

試試這個。 Code demo

<?php 
$result = '<?xml version="1.0" encoding="UTF-8"?> 
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0" xmlns:domain="http://epp.nic.ir/ns/domain-1.0"> 
    <response xmlns:domain="http://epp.nic.ir/ns/domain-1.0"> 
     <result code="1000"> 
      <msg>Command completed successfully</msg> 
     </result> 
     <resData xmlns:domain="http://epp.nic.ir/ns/domain-1.0"> 
      <domain:chkData xmlns:domain="http://epp.nic.ir/ns/domain-1.0"> 
       <domain:cd> 
        <domain:name normalized_name="dsfdsfdsfsdfdffdg" 
           canonized_name="dsfdsfdsfsdfdffdg" tld="ir" avail="1"> 
         dsfdsfdsfsdfdffdg.ir 
        </domain:name> 
       </domain:cd> 
      </domain:chkData> 
     </resData> 
     <trID> 
      <clTRID>TEST-14922533391168726112</clTRID> 
      <svTRID>IRNIC_2017-04-15T15:18:59+04:30_epi</svTRID> 
     </trID> 
    </response> 
</epp>'; 
$a = simplexml_load_string($result); 
var_dump($a);