Мини-парсер XML

Machine

Новичок
Добрый день, прошу помощи у умных людей. Сразу говорю, что в php вообще 0, все рыл с помощью гугла, кое-что все-таки удалось сделать.
В общем: есть XML файл, его вид:
Код:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<banlist>
<ban hwid="Здесь HWID людей" time="1425752820227" type="NORMAL">
<accounts>
<account time="1425752820227">77xekcstylee</account>
</accounts>
<ipv4>
<ip time="1425752820227">111.111.111.111</ip>
</ipv4>
<comment>Клевета</comment>
</ban>
<ban hwid="Здесь HWID людей" time="1425599899891" type="NORMAL">
<accounts>
<account time="1425599899891">adbarada</account>
</accounts>
<ipv4>
<ip time="1425599899891">111.111.111.111</ip>
</ipv4>
<comment>Реклама игровых серверов</comment>
</ban>
<ban hwid="Здесь HWID людей" time="1425749784310" type="NORMAL">
<accounts>
<account time="1425749784310">srorbit82rus</account>
</accounts>
<ipv4>
<ip time="1425749784310">111.111.111.111</ip>
</ipv4>
<comment>Оскробление администрации</comment>
</ban>
<ban hwid="Здесь HWID людей" time="1425646312506" type="NORMAL">
<accounts>
<account time="1425646352871">7777</account>
</accounts>
<comment>[03/06/15 15:51] acc: '7777', using: L2Phx</comment>
</ban>
<ban hwid="2c7017500089a5834c1c1376527ef2d200a5cc25521cb4f5" time="1425771384129" type="NORMAL">
<comment>[03/08/15 02:36] acc: 'ttm1crosd', using: L2Phx</comment>
</ban>
<ban hwid="Здесь HWID людей" time="1425750175580" type="NORMAL">
<accounts>
<account time="1425750442917">m4oleg3209</account>
</accounts>
<comment>[03/07/15 20:42] acc: 'm4oleg3209', using: cheat</comment>
</ban>
<ban hwid="Здесь HWID людей" time="1425517821749" type="NORMAL">
<accounts>
<account time="1425517821749">9ddimas</account>
</accounts>
<ipv4>
<ip time="1425517821749">111.111.111.1112</ip>
</ipv4>
<comment>Оскробление администрации</comment>
</ban>
<ban hwid="Здесь HWID людей" time="1425752554153" type="NORMAL">
<accounts>
<account time="1425752554153">27amigomc</account>
</accounts>
<ipv4>
<ip time="1425752554153">111.111.111.111</ip>
</ipv4>
<comment>Оскробление администрации</comment>
</ban>
<ban hwid="Здесь HWID людей" time="1425755996080" type="NORMAL">
<accounts>
<account time="1425756013676">cr123123</account>
</accounts>
<comment>[03/07/15 22:19] acc: 'cr123123', using: cheat</comment>
</ban>
<ban hwid="Здесь HWID людей" time="1425757804740" type="NORMAL">
<accounts>
<account time="1425757843122">46orakula666</account>
</accounts>
<comment>[03/07/15 22:50] acc: '46orakula666', using: cheat</comment>
</ban>
<ban hwid="Здесь HWID людей" time="1425763656291" type="NORMAL">
<accounts>
<account time="1425763748019">4czet13</account>
<account time="1425764466187">z1aleks</account>
<account time="1425763683834">1kzet13</account>
<account time="1425764214466">zezet13</account>
</accounts>
<comment>[03/08/15 00:27] acc: '1kzet13', using: Bot Soft</comment>
</ban>
<ban hwid="Здесь HWID людей" time="1425777900915" type="NORMAL">
<accounts>
<account time="1425777919146">27tegoss2014</account>
<account time="1425778025595">62kol123</account>
</accounts>
<comment>[03/08/15 04:25] acc: '27tegoss2014', using: cheat</comment>
</ban>
<ban hwid="Здесь HWID людей" time="1425752467906" type="NORMAL">
<accounts>
<account time="1425762201081">xwbeertru</account>
<account time="1425752467906">kebeertrupacan</account>
</accounts>
<ipv4>
<ip time="1425752467906">111.111.111.111</ip>
</ipv4>
<comment>Оскробление администрации</comment>
</ban>
<ban hwid="Здесь HWID людей" time="1425495747061" type="NORMAL">
<accounts>
<account time="1425495747061">fefang1</account>
</accounts>
<ipv4>
<ip time="1425495747061">111.111.111.111</ip>
</ipv4>
<comment>Оскробление игроков</comment>
</ban>
<ban hwid="Здесь HWID людей" time="1425752259312" type="NORMAL">
<accounts>
<account time="1425752279697">11samtakoy666</account>
</accounts>
<comment>[03/07/15 21:17] acc: '11samtakoy666', using: L2Walker</comment>
</ban>
<ban hwid="Здесь HWID людей" time="1425752786715" type="NORMAL">
<accounts>
<account time="1425755215833">14adterorist</account>
<account time="1425752810170">27adterorist</account>
</accounts>
<comment>[03/07/15 21:26] acc: '27adterorist', using: L2Tower</comment>
</ban>
<ban hwid="Здесь HWID людей" time="1425772550109" type="NORMAL">
<accounts>
<account time="1425772550109">44fallenbruse</account>
</accounts>
<ipv4>
<ip time="1425772550109">111.111.111.111</ip>
</ipv4>
<comment>Фарм на боте</comment>
</ban>
<ban hwid="Здесь HWID людей" time="1425758204770" type="NORMAL">
<accounts>
<account time="1425758700408">33dimka</account>
<account time="1425759337223">reafterparty</account>
<account time="1425759958898">z4lemberg</account>
<account time="1425758244282">mrdimka</account>
</accounts>
<comment>[03/07/15 22:56] acc: 'mrdimka', using: cheat</comment>
</ban>
<ban hwid="Здесь HWID людей" time="1425640240058" type="NORMAL">
<accounts>
<account time="1425640240058">kkstas90</account>
</accounts>
<ipv4>
<ip time="1425640240058">111.111.111.111</ip>
</ipv4>
<comment>Клевета</comment>
</ban>
<ban hwid="Здесь HWID людей" time="1425768128675" type="NORMAL">
<accounts>
<account time="1425768154502">emdetey</account>
<account time="1425768685423">4erpak</account>
</accounts>
<comment>[03/08/15 01:42] acc: 'emdetey', using: Bot Soft</comment>
</ban>
</banlist>
Его собственно и нужно парсить. С моими знаниями, что у меня получилось накалякать за часов 5:
PHP:
<?php
$bans = simplexml_load_file('../bans.xml');
$g = -1;
    foreach ($bans as $ban) {
        $g++;
        foreach ($bans->ban[$g]->accounts->account as $key=> $value) {
            $kk=($value);
        }
    }
$y = 0;
$count = 1;
    foreach ($bans as $ban) {
        $y++;
        foreach ($bans->ban[$y]->accounts->account as $key=> $value) {
        echo $count, ' ', substr_replace($value, null, 0,2), ' время: ', date('Y-m-d H:i:s',(int)substr($value['time'],0,-3)), ' Причина: ', $bans->ban[$y]->comment;
        echo '<br>';
        $count++;
        }
    }
?>
В выводе получаю вот такое:

Теперь вопросы и то, что у меня не получилось сделать.
1. Как видно на скрине - есть аккаунт, misterx123 допустим, нужно исключить повторения, если такой аккаунт в точности уже существует. Каким образом это можно сделать?
2. Убив часов 6, пытался отсортировать весь результат по времени, нашел много функций, взял cmp, но тогда не получалось либо вытащить причину, либо получалось вытащить причину+время, но максимум вытаскивался 1 аккаунт человека, хотя забаненных под одним железом в теге account может быть штук 5. Каким образом можно все между собой сохранить, чтобы при этом была сортировка как в первом пункте?
 

WMix

герр M:)ller
Партнер клуба
чую что xml может быть больше, по этой причине использовал бы SAX. касательно твоей проблемы, пиши результат в базу, а там как insert on duplicate update так и предварительный select можно использовать
 
Сверху