Zdravo.
Radim parsiranje i pretraživanje XML fajlove koje sadrže podatke o utkmicama po sportovima. (xml file je u prilogu)
Imam nedoumice kako da efikasno pretražujem XML sa Xpathom (nezaboravimo da PHP ima limitiranu podršku sa Xpath 2.0).
1) Potrebno je da izbacim sve utakmice u toku (LIVE) za jedan sport, tačnije Fudbal.
PHP kôd:
<?php
$xml_data = simplexml_load_file("livescore_full.xml");
// Pokupi utakmice koje su toku (1.poluvrijeme, 2. poluvrijeme, Poluvrijeme (HT))
$live_matches = $xml_data->xpath('//Match[Status[@Code="6"]] | //Match[Status[@Code="7"]] | //Match[Status[@Code="31"]]');
print_r($live_matches);
?>
Ovo i vraća te utakmice, ali za SVE sportove. Može vratiti utakmice za bakset i slično. Da li nekako mogu ograničiti i specificirati da pretražuje smo po određenom sportu na osnovu njegovog ID?
2) Ponekad je potrebno da pokupim sve utakmice jednog turnira, što mogu dobiti sa:
PHP kôd:
$tournament_matches = $xml_data->xpath('//Tournament[@UniqueTournamentId="373"]');
Ali ako pogledate strukturu XML fajla, Tournament ima dva roditelja. Category i Sport nodove. Sa navedenim upitom imam podatke o turniru i pripadajućim utakmicama, ali ne i o kategoriji i sportu o kojem pripada. Kako da dobavim te podatke kroz jedan xpath query (ili što efikasnije) u sljedećoj strukturi (visedimenzionlani niz objekata odgovarajuće XML strukture):
Kôd:
<Sport SportId="1">
<Name language="bs">Fudbal</Name>
<Name language="en">Soccer</Name>
<Category CategoryId="13">
<Name language="bs">Brazil</Name>
<Name language="en">Brazil</Name>
<Tournament TournamentId="283" UniqueTournamentId="373">
<Name language="bs">Copa do Brasil</Name>
<Name language="en">Copa do Brasil</Name>
<Match MatchId="7093555" Id="4197313">
<MatchDate>2013-08-29T02:50:00 CEST</MatchDate>
<Team1 TeamId="87713" UniqueTeamId="5926">
<Name language="bs">Gremio RS</Name>
<Name language="en">Gremio RS</Name>
</Team1>
<Team2 TeamId="87103" UniqueTeamId="1968">
<Name language="bs">Santos FC SP</Name>
<Name language="en">Santos FC SP</Name>
</Team2>
<Status Code="0">
<Name language="bs">Nije počelo</Name>
<Name language="en">Not started</Name>
</Status>
<Winner>0</Winner>
</Match>
</Tournament>
</Category>
</Sport>
U prilogu su php skripta i XML file.
Lp.