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