tryanderror
Mitglied
Als erstes ich hab so gut wie kein Plan von PHP.
Hab so ziemlich alles gelesen was hier zu XML zu finden ist, komme jetzt aber nicht mehr weiter.
Ich habe ein Verzeichnis auf dem Server in dem sich die XML Dateien befinden. Aus diesen XML Dateien benötige ich jedoch nur einzelne Einträge. Es würde mir reichen diese in ein Array zu schreiben und dann als Website ausgeben zu können.
Soweit so gut.
Ich hab es mit dem Code probiert:
Funktioniert auch soweit. Nur ich habe in der XML Datei jedoch mehrere Einträge von folgendem:
Diese Blöcke wiederholen sich halt bei mehreren Spielern. Die Ausgabe zeigt jedoch nur einen Eintrag.
Wie bekomme ich jetzt die anderen Player auch noch in die Ausgabe bzw. in das Array?
Wie kann ich alle Dateien, die sich in dem Verzeichnis befinden, auf einmal auslesen?
- siehe rot markierte Stelle -
Vielleicht hat ja jemand einen Codeschnippsel für mich.
Hab so ziemlich alles gelesen was hier zu XML zu finden ist, komme jetzt aber nicht mehr weiter.
Ich habe ein Verzeichnis auf dem Server in dem sich die XML Dateien befinden. Aus diesen XML Dateien benötige ich jedoch nur einzelne Einträge. Es würde mir reichen diese in ein Array zu schreiben und dann als Website ausgeben zu können.
Soweit so gut.
Ich hab es mit dem Code probiert:
Code:
<?php
$file = "1127518465.xml";
$xml_parser = xml_parser_create();
if (!($fp = fopen($file, "r"))) {
die("could not open XML input");
}
$data = fread($fp, filesize($file));
fclose($fp);
xml_parse_into_struct($xml_parser, $data, $vals, $index);
xml_parser_free($xml_parser);
$params = array();
$level = array();
foreach ($vals as $xml_elem) {
if ($xml_elem['type'] == 'open') {
if (array_key_exists('attributes',$xml_elem)) {
list($level[$xml_elem['level']],$extra) = array_values($xml_elem['attributes']);
} else {
$level[$xml_elem['level']] = $xml_elem['tag'];
}
}
if ($xml_elem['type'] == 'complete') {
$start_level = 1;
$php_stmt = '$params';
while($start_level < $xml_elem['level']) {
$php_stmt .= '[$level['.$start_level.']]';
$start_level++;
}
$php_stmt .= '[$xml_elem[\'tag\']] = $xml_elem[\'value\'];';
eval($php_stmt);
}
}
echo "<pre>";
print_r ($params);
print_r ($level);
echo "</pre>";
?>php
Funktioniert auch soweit. Nur ich habe in der XML Datei jedoch mehrere Einträge von folgendem:
Code:
<Players>
<Player>
<ID>31</ID>
<Team>0</Team>
<Name>blabla</Name>
<Score>0</Score>
<Kills>0</Kills>
<Deaths>0</Deaths>
<TOP>0</TOP>
<Ping>1542</Ping>
<PL>0</PL>
<Time>1</Time>
<IP>0.0.0.0</IP>
<Damage>
</Damage>
</Player>
<Player>
<ID>1</ID>
<Team>0</Team>
<Name>blabla</Name>
<Score>0</Score>
<Kills>0</Kills>
<Deaths>0</Deaths>
<TOP>0</TOP>
<Ping>1542</Ping>
<PL>0</PL>
<Time>1</Time>
<IP>0.0.0.0</IP>
<Damage>
</Damage>
</Player>
Diese Blöcke wiederholen sich halt bei mehreren Spielern. Die Ausgabe zeigt jedoch nur einen Eintrag.
Code:
[PLAYERS] => Array([PLAYER] => Array
([ID] => 1
[TEAM] => 1
[NAME] => test
[SCORE] => 0
[KILLS] => 18
[DEATHS] => 3
[TOP] => 0
[PING] => 57
[PL] => 0
[TIME] => 5
[IP] => 0.0.0.0
[DAMAGE] =>
)
)
Wie bekomme ich jetzt die anderen Player auch noch in die Ausgabe bzw. in das Array?
Wie kann ich alle Dateien, die sich in dem Verzeichnis befinden, auf einmal auslesen?
- siehe rot markierte Stelle -
Vielleicht hat ja jemand einen Codeschnippsel für mich.