Ik heb een probleem met het uitlezen van xml,
ik krijg het volgende terug:

<?php
$response = '
<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0" xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
<response>
<result code="1000">
<msg>Command completed successfully</msg>
</result>
<resData>
<domain:chkData>
<domain:cd>
<domain:name avail="true">DOMAINNAME.be</domain:name>
</domain:cd>
</domain:chkData>
</resData>
<trID>
<clTRID>clientref-00029</clTRID>
<svTRID>dnsbe-0</svTRID>
</trID>
</response>
</epp>
';
?>

Vervolgens zet ik dit in een DOMXPath object:
<?php
$dom = new DOMDocument();
$dom->formatOutput = true;
$dom->loadXML($response);
$responsexPath = new DOMXPath($dom);
?>
Nu wil ik met een query de waarde van het 'avail' attribute aanroepen:

<?php
$result = $responsexPath->query('/epp/response/resdata/domain:chkdata/domain:cd/domain:name@avail');
?>

Dit zonder resultaat,
kan iemand mij vertellen wat de juiste manier is dit te doen?
Let op je hoofdletters in je query, en bij XPath moet je eerst de namespaces registreren voordat je daarbinnen kan zoeken.

<?php
$response = '<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0" xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
<response>
<result code="1000">
<msg>Command completed successfully</msg>
</result>
<resData>
<domain:chkData>
<domain:cd>
<domain:name avail="true">DOMAINNAME.be</domain:name>
</domain:cd>
</domain:chkData>
</resData>
<trID>
<clTRID>clientref-00029</clTRID>
<svTRID>dnsbe-0</svTRID>
</trID>
</response>
</epp>
';

$dom = new DOMDocument();
$dom->formatOutput = true;
$dom->loadXML($response);
$responsexPath = new DOMXPath($dom);

// namespaces registreren
$responsexPath->registerNamespace('epp', 'urn:ietf:params:xml:ns:epp-1.0');
$responsexPath->registerNamespace('domain', 'urn:ietf:params:xml:ns:domain-1.0');

// let op: xpath en xml zijn hoofdlettergevoelig!
$result = $responsexPath->query('/epp:epp/epp:response/epp:resData/domain:chkData/domain:cd/domain:name/@avail');

var_dump($result->item(0)->nodeValue);
?>
Hartelijk bedankt,
het werkt perfect op deze manier.

Reageren