pehser, Я ни в коем случае не указываю чем пользоваться, просто обрати внимание на XMLReader, может он тебе приглянётся:
PHP:
$xml = new XMLReader();
$xml->open($file);
while ($xml->read()) {
if (($xml->nodeType === XMLReader::ELEMENT) //новая ветка, естественно есть и другие константы
&& ($xml->localName === 'category')) {
$id = $xml->getAttribute('id');
}
Всё xml-дерево отражается в виде плоского списка. Проходишь по нему таким простым циклом и обрабатываешь полученные данные.