Autor Zpráva
mackopu
Profil
Mám dynamicky generovaný a každodenně aktualizovaný XML soubor (hokejové zápasy) s následující strukturou:
<?xml version="1.0" encoding="utf-8"?>
<Export last_change="2007-10-11 20:22:42" uid="1192126962.33" >
  <Matchday date="2007-10-11">
    <Match id="7273" league_code="10"  start_time="18:30" round="11" status="Sched" status_type="Sched" period="0" last_change="2007-10-11 20:22:42" >
      <Home id="LIB" name="Bílí Tygři Liberec"/>
      <Away id="PCE" name="HC  Moeller Pardubice"/>
      <Results>
        <Result id="1" name="CURRENT" value="0-0"/>
        <Result id="2" name="FT" value="0-0"/>
      </Results>
      <Periods>
        <Period id="1" name="1P" value="0-0" />
        <Period id="2" name="2P" value="0-0" />
        <Period id="3" name="3P" value="0-0" />
        <Period id="4" name="OT" value="0-0" />
        <Period id="5" name="PN" value="0-0"/>
      </Periods>
      <Scorers>
      </Scorers>
      <Cards>
      </Cards>
    </Match>
    <Match id="7271" league_code="10"  start_time="17:25" round="11" status="Fin" status_type="Fin" period="k" last_change="2007-10-11 19:46:43" >
      <Home id="KLA" name="HC GEUS OKNA Kladno"/>
      <Away id="KVA" name="HC Energie Karlovy Vary"/>
      <Results>
        <Result id="1" name="CURRENT" value="2-6"/>
        <Result id="2" name="FT" value="3-6"/>
      </Results>
      <Periods>
        <Period id="1" name="1P" value="1-1" />
        <Period id="2" name="2P" value="1-4" />
        <Period id="3" name="3P" value="1-1" />
        <Period id="4" name="OT" value="0-0" />
        <Period id="5" name="PN" value="0-0"/>
      </Periods>
      <Scorers>
        <Scorer name="Kraft" assist_1 = "Bílek" assist_2 = "" period="1" team="KVA" time="12" type=""/>
        <Scorer name="Grof" assist_1 = "Skladaný" assist_2 = "" period="2" team="KVA" time="31" type=""/>
        <Scorer name="Hluchý" assist_1 = "Duben" assist_2 = "" period="2" team="KVA" time="34" type=""/>
        <Scorer name="Zucker" assist_1 = "Mi.Procházka" assist_2 = "" period="2" team="KVA" time="36" type=""/>
        <Scorer name="Skladaný" assist_1 = "Kristek" assist_2 = "" period="2" team="KVA" time="37" type=""/>
        <Scorer name="Čurilla" assist_1 = "M.Procházka" assist_2 = "" period="2" team="KLA" time="38" type=""/>
        <Scorer name="Bílek" assist_1 = "Němec" assist_2 = "" period="3" team="KVA" time="51" type=""/>
        <Scorer name="Ševc" assist_1 = "Kalla" assist_2 = "" period="1" team="KLA" time="8" type=""/>
      </Scorers>
      <Cards>
      </Cards>
    </Match>
  </Matchday>
</Export>

Každý zápas má svůj ukazatel league_code, podle kterého potřebuji vyfiltrovat pouze zápasy v extralize - ta má league_code 10, play-off je potom league_code 11. Pak chci zjistit, zda je tam tým s ID KVA (Karlovy Vary). Pokud budu chtít sledovat i aktuální třetinu (atribut period elementu match), zde je číselník tohoto atributu:
0 - před zápasem
1 - první třetina
1p - po 1. třetině
2 - druhá třetina
2p - po druhé třetině
3 - třetí třetina
3p - po třetí třetině
4 - prodloužení
4p - po prodloužení, před samostatnými nájezdy
sn - probíhají samostatné nájezdy
k - konec
kp - konec po prodloužení
kn - konec po samostatných nájezdech

a pak tam jsou ještě
xo - utkání odloženo
xp - utkání přerušeno
xy - utkání zrušeno
xk - utkání kontumováno

A nyní potřebuji pomocí parsování:
1. zjistit, zda běží zápas extraligy nebo play-off a jedním z hracích týmů jsou Karlovy Vary
a pokud ano
2. vypsat na výstup čas začátku utkání, která třetina se právě hraje, názvy obou týmů a stav utkání včetně vývoje po řetinách podobně, jako je tomu na http://www.onlajny.cz/detail.php?id=7271&hra=hokej

Gůglil jsem, samozřejmě. Ale našel jsem jen jednoduché parsery a popravdě - beztak jsem z toho jelen.
P.S.: Povolení k vytěžování cizí databáze mám.
ondra121
Profil *
Prostuduj si regulární výrazy a vytvoř si vlastní parser, bude se ti to určitě do budoucna hodit.
tiso
Profil
ondra121 ???

mackopu začiatok riešenia:
$xml=simplexml_load_file('export.xml');
foreach($xml->Matchday->Match as $match){
	if(($match['league_code'] == 10 OR $match['league_code'] == 11) AND ($match->Home['id'] == 'KVA' OR $match->Away['id'] == 'KVA')){
		echo $match['start_time'];
		echo $match['period'];
		echo $match->Home['name'];
		echo $match->Away['name'];
		...
	}
	else{continue;}
}
ondra121
Profil *
Dobře no, šel jsem na to trochu složitě ;-)
mackopu
Profil
tiso
Perfektní, to je ono. Teď už si poradím. Díky moc!
mackopu
Profil
Ještě poslední věc - jak vypíši jednotlivé střelce daného zápasu (atribut name elementu Scorer)?
Tedy i s ohledem na to, že jich může být jiný počet než v uvedené ukazce...
Kajman_
Profil *
foreach($match->Scorers->Scorer as $scorer) {...}
mackopu
Profil
Prosté, děkuji. Chci to použít (zanořit) v té části kódu od tiso, kde ponechal tři tečky. Snad to bude fungovat.

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: