- var_dump: documentation ( source)
<?php
function fromXML(XMLReader $xml)
{
$node = [];
while ($xml->read()) {
// if (!$xml->isValid()) {
// $xmlErrors = libxml_get_errors();
// $errorLines = array();
// foreach ($xmlErrors as $error) {
// $errorLines[] = 'Line: ' . $error->line . ' Column: ' . $error->column . ' - ' . $error->message;
// }
// throw new Exception(join("", $errorLines));
// }
switch ($xml->nodeType) {
case XMLReader::END_ELEMENT:
return (count($node) > 0) ? $node : null;
case XMLReader::ELEMENT:
$node[$xml->name] = ($xml->isEmptyElement ? '' : fromXML($xml));
break;
case XMLReader::TEXT:
case XMLReader::CDATA:
$node = $xml->value;
break;
}
}
return $node;
}
$data = '<?xml version="1.0" encoding="UTF-8"?>
<request>
<header>
<version>0.6</version>
<dateTime>2017-07-05T11:21:46</dateTime>
<sender>PROVIDER</sender>
<recipient>dfsafdaf</recipient>
<messageType>isvalid</messageType>
</header>
<voucher>
<voucherId>1</voucherId>
</voucher>
</request>';
$xml = new XMLReader();
$xml->xml($data);
var_dump(fromXML($xml));