获取xml属性php

时间:2018-11-07 12:25:58

标签: php xml api

我正在尝试连接到API系统,并且它使用XML进行通信。当我尝试获取请求时,API会向我返回一个XML字符串,如下所示:

<?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="dasfasfgg" canonized_name="dasfasfgg" tld="ir" avail="1">dasfasfgg.ir</domain:name>
        </domain:cd>
      </domain:chkData>
    </resData>
    <trID>
      <clTRID>TEST-12345</clTRID>
    </trID>
  </response>
</epp>

我想在avail名称空间上获得domain:name属性。我尝试过:

$xml = simplexml_load_string($response);
$attrs = $xml->domain->attributes();

但是in返回一个空对象。如何获取属性?

1 个答案:

答案 0 :(得分:-1)

这不是最优雅的方法,但是:

$xml = simplexml_load_string($response); // as response I understand given xml as string
$namespaces = $xml->getNamespaces(true);

$value = $xml->response->resData->children($namespaces['domain'])->chkData->cd->name->attributes()->avail[0];