当我在php中使用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
值,我错过了这个属性。
我怎样才能解决这个问题?
答案 0 :(得分:1)
您使用的是错误的变量$response
,它根本没有初始化。使用包含完整html字符串而不是$result
$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);
答案 1 :(得分:0)
感谢@ splash58。
我应该像这样使用名称空间:
$a = simplexml_load_string($result);
$ns = $a->getNamespaces(true);
var_dump($a->response->resData->children($ns['domain']));