anyone know why this scritp dont read all the posts..?
xml file: http://www.camelotherald.com/xml/servers.xml
script in action: http://www.ant.nu/test.php
if u look at the script in action, it prints out the xml file, except 1
line..
the output looks like this:
Relicname Relictype Relicowner
Midgard
Merlin's Staff Magic Hibernia
it should look like this according to the xmlfile:
Relicname Relictype Relicowner
Scabbard of Excalibur Melee Midgard
Merlin's Staff Magic Hibernia
this is the script:
<?php
// ****************** Settings ********************************
$ServerToPrint = "Guinevere";
// ***************************************************************
//////////////////////////////////////////////////////////////////
// START OF THE CODE
$printedserver = false;
$printedrelic = false;
$printedkeep = false;
$depth = array();
$insideitem = false;
$insidekeep = false;
$tag = "";
$server = false;
$crelic = new RelicInfo;
$cserver = new ServerInfo;
$ckeep = new KeepInfo;
class KeepInfo {
var $KeepName = Array();
var $KeepOwner = Array();
var $KeepRealm = Array();
var $KeepClaimant = Array();
function PrintHeader() {
print "<TR><TD><br></TD><TD></TD><TD></TD></TR>";
print
"<TR><TD><b>Keepname</b></TD><TD><b>Keepowner</b></TD><TD><b>Keepclaimant</b
></TD></TR>";
}
function PrintInfo() {
for ($i = 0; $i < count($this->KeepName); $i++) {
if ($this->KeepRealm[$i] == "Albion") { print "<TR><TD><b><font
color=#ff0000>{$this->KeepName[$i]}</font></b>"; }
if ($this->KeepRealm[$i] == "Midgard") { print "<TR><TD><b><font
color=#0000ff>{$this->KeepName[$i]}</font></b>"; }
if ($this->KeepRealm[$i] == "Hibernia") { print "<TR><TD><b><font
color=#00ff00>{$this->KeepName[$i]}</font></b>"; }
if ($this->KeepRealm[$i] == "Neutral") { print "<TR><TD><b><font
color=#000000>{$this->KeepName[$i]}</font></b>"; }
print "<TD>{$this->KeepOwner[$i]}</TD>";
print "<TD>{$this->KeepClaimant[$i]}</TD></TR>\n";
}
}
function SetName($name) {
$this->KeepName[] = $name;
}
function SetOwner($owner) {
$this->KeepOwner[] = $owner;
}
function SetRealm($realm) {
$this->KeepRealm[] = $realm;
}
function SetClaimant($claim) {
$this->KeepClaimant[] = $claim;
}
}
class RelicInfo {
var $RelicName = Array();
var $RelicType = Array();
var $RelicRealm = Array();
var $RelicOwner = Array();
function PrintHeader() {
print "<TR><TD><br></TD><TD></TD><TD></TD></TR>";
print
"<TR><TD><b>Relicname</b></TD><TD><b>Relictype</b></TD><TD><b>Relicowner</b>
</TD></TR>";
}
function PrintInfo() {
for ($i = 0; $i < count($this->RelicName); $i++) {
if ($this->RelicRealm[$i] == "Albion") { print "<TR><TD><b><font
color=#ff0000>{$this->RelicName[$i]}</font></b>"; }
if ($this->RelicRealm[$i] == "Midgard") { print "<TR><TD><b><font
color=#0000ff>{$this->RelicName[$i]}</font></b>"; }
if ($this->RelicRealm[$i] == "Hibernia") { print "<TR><TD><b><font
color=#00ff00>{$this->RelicName[$i]}</font></b>"; }
print "<TD>{$this->RelicType[$i]}</TD>";
print "<TD>{$this->RelicOwner[$i]}</TD></TR>\n";
}
}
function SetName($name) {
$this->RelicName[] = $name;
}
function SetType($type) {
$this->RelicType[] = $type;
}
function SetRealm($realm) {
$this->RelicRealm[] = $realm;
}
function SetRelicOwner($owner) {
$this->RelicOwner[] = $owner;
}
}
class ServerInfo {
var $ServerName = Array();
var $ServerPopulation = Array();
var $ServerType = Array();
var $ServerStatus = Array();
var $Totalpop = 0;
function PrintHeader() {
print "<TR><TD><br></TD><TD></TD><TD></TD></TR>";
print
"<TR><TD><b>Servername/type</b></TD><TD><b>Status</b></TD><TD><b>Population<
/b></TD></TR>";
}
function PrintInfo() {
for ($i = 0; $i < count($this->ServerName); $i++) {
print "<TR><TD><b>{$this->ServerName[$i]}</b>";
if ($this->ServerType[$i]) { print
"(<i>{$this->ServerType[$i]}</i>)"; }
print "</TD>";
print "<TD>{$this->ServerStatus[$i]}</TD>";
print "<TD>{$this->ServerPopulation[$i]}</TD></TR>\n";
}
}
function PrintTotal() {
print $this->Totalpop;
}
function SetServer($server) {
$this->ServerName[] = $server;
}
function SetType($type) {
$this->ServerType[] = $type;
}
function SetStatus($status) {
$this->ServerStatus[] = $status;
}
function SetPopulation($pop) {
$this->ServerPopulation[] = $pop;
$this->Totalpop += $pop;
}
}
function startElement($parser, $tagName, $attrs) {
global $ServerToPrint, $server, $depth, $insideitem, $insidekeep, $tag,
$da_server, $da_type, $da_relicname, $da_relictype, $da_relicrealm,
$da_keepname, $da_keeprealm;
if ($insideitem) {
$tag = $tagName;
} elseif ($tagName == "RELIC") {
$insideitem = true;
while (list ($key, $val) = each ($attrs)) {
switch($key) {
case "NAME": $da_relicname=$val;break;
case "TYPE": $da_relictype=$val;break;
case "REALM": $da_relicrealm=$val;break;
} // end case
} // end while
} elseif($tagName == "SERVER") {
$depth[$parser]++;
$insideitem = true;
while (list ($key, $val) = each ($attrs)) {
if ($key == "NAME") { $da_server=$val; if($val == $ServerToPrint) {
$server = true; } else { $server = false; } }
if ($key == "TYPE") { $da_type=$val; }
} // end while
} elseif($tagName == "KEEP") {
$insideitem = true;
$insidekeep = true;
while (list ($key, $val) = each ($attrs)) {
switch($key) {
case "NAME": $da_keepname=$val;break;
case "REALM": $da_keeprealm=$val;break;
} // end case
} // end while
}
}
function characterData($parser, $data) {
global $insideitem, $insidekeep, $tag, $da_server, $da_population, $da_type,
$da_status,$da_totalpop, $da_relicowner, $da_keepowner, $da_keepclaimant;
if ($insideitem) {
if ($insidekeep) {
switch($tag) {
case "OWNER" : $da_keepowner .= $data; break;
case "CLAIMANT" : $da_keepclaimant .= $data; break;
}
} else {
switch ($tag) {
case "POPULATION": $da_population .= $data; $da_totalpop += $data; break;
case "STATUS": $da_status .= $data; break;
case "OWNER": $da_relicowner .= $data; break;
}
}
}
}
function endElement($parser, $tagName) {
global $cserver, $ckeep, $crelic, $printedserver, $server, $depth,
$insideitem, $insidekeep, $tag, $da_server, $da_population, $da_type,
$da_status, $da_relicname, $da_relictype, $da_relicrealm, $da_relicowner,
$da_keepowner, $da_keepclaimant, $da_keepname, $da_keeprealm;
$depth[$parser]--;
if ($tagName == "SERVER") {
if ($server) {
//if (!$printedserver) { print
"<TD><B>Server</B></TD><TD><B>Status</B></TD><TD><B>Users</B></TD></TR>\n";
$printedserver=true; }
$cserver->SetServer($da_server);
$cserver->SetType($da_type);
$cserver->SetStatus($da_status);
$cserver->SetPopulation($da_population);
}
$da_server = "";
$da_population = "";
$da_status = "";
$da_type = "";
$insideitem = false;
} elseif ($tagName == "RELIC") {
if ($server) {
$crelic->SetName($da_relicname);
$crelic->SetType($da_relictype);
$crelic->SetRealm($da_relicrealm);
$crelic->SetRelicOwner($da_relicowner);
}
$da_relicname = "";
$da_relictype = "";
$da_relicrealm = "";
$da_relicowner = "";
$insideitem = false;
} elseif ($tagName == "KEEP") {
if ($server) {
$ckeep->SetName($da_keepname);
$ckeep->SetRealm($da_keeprealm);
$ckeep->SetOwner($da_keepowner);
$ckeep->SetClaimant($da_keepclaimant);
}
$da_keepname = "";
$da_keeprealm = "";
$da_keepowner = "";
$da_keepclaimant = "";
$insideitem = false;
$insidekeep = false;
}
}
$xml_parser = xml_parser_create();
xml_set_element_handler($xml_parser, "startElement", "endElement");
xml_set_character_data_handler($xml_parser, "characterData");
print "<TABLE BORDER=0 WIDTH=0%>\n<TR>\n";
$fp = fopen("http://www.camelotherald.com/xml/servers.xml","r") or
die("Error reading RSS data.");
while ($data = fread($fp, 4096))
xml_parse($xml_parser, $data, feof($fp))
or die(sprintf("XML error: %s at line %d",
xml_error_string(xml_get_error_code($xml_parser)),
xml_get_current_line_number($xml_parser)));
fclose($fp);
$cserver->PrintHeader();
$cserver->PrintInfo();
$crelic->PrintHeader();
$crelic->PrintInfo();
$ckeep->PrintHeader();
$ckeep->PrintInfo();
print "</TABLE>\n";
xml_parser_free($xml_parser);
?>
anyone got any idea why it dosent print out the information..?
regards
patrick
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php