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

Reply via email to