<?php

$xml = <<<'XML'
<?xml version="1.0" encoding="utf-8"?>
    <extensions>
        <extension extensionkey="fp_product_features">
            <downloadcounter>355</downloadcounter>
            <version version="0.1.0">
                <title>Product features</title>
                <description/>
                <downloadcounter>24</downloadcounter>
                <state>beta</state>
                <reviewstate>0</reviewstate>
                <category>plugin</category>
                <lastuploaddate>1142878270</lastuploaddate>
                <uploadcomment> added related features</uploadcomment>
            </version>
        </extension>
    </extensions>
XML;

$reader = new XMLReader();
$reader->open('data:/text/plain,'.urlencode($xml));

$result = [];
$element = null;

while ($reader->read()) {

  if($reader->nodeType === XMLReader::ELEMENT) 
  {
    $element = $reader->name;

    if($element === 'extensions') {
        $result['extensions'] = array();
    }

    if($element === 'extension') {
        $result['extensions']['extension'] = array();
    }

    if($element === 'downloadcounter') {
        if(!array_key_exists($result['extensions']['extension'], 'version')) {
            $result['extensions']['extension']['downloadcounter'] = '';
        } /*else {
            $result['extensions']['extension']['version']['downloadcounter'] = '';
        }*/
    }

    if($element === 'version') {
        $result['extensions']['extension']['version'] = array();
        while ($reader->read()) {
           if($reader->nodeType === XMLReader::ELEMENT) 
           {
               $element = $reader->name;
               $result['extensions']['extension']['version'][$element] = '';
           }
           if($reader->nodeType === XMLReader::TEXT) 
           {
               $value = $reader->value;
               $result['extensions']['extension']['version'][$element] = $value;
           }
        }
    }
  }

  if($reader->nodeType === XMLReader::TEXT) 
  {
    $value = $reader->value;

    if($element === 'downloadcounter') {
        if(!is_array($result['extensions']['extension']['version'])) {
            $result['extensions']['extension']['downloadcounter'] = $value;
        }
        if(is_array($result['extensions']['extension']['version'])) {
            $result['extensions']['extension']['version']['downloadcounter'] = $value;
        }
    }
  }
}
$reader->close();

echo var_export($result, true);