I'm trying to write PHP code that will not only parse the XML but also
allow me to sort the parsed information by the values parsed.
 
Current code
==========
class RSSParser {
 var $insideitem = false;
 var $tag = "";
 var $ServerName = "";
 var $ServerStatus = "";
 var $ServerType = "";
 var $ServerPopulation = "";
 
 function startElement($parser, $tagName, $attrs) {
  if ($this->insideitem) {
   $this->tag = $tagName;
  } elseif ($tagName == "SERVER") {
   $this->insideitem = true;
   while (list ($key, $val) = each($attrs)) {
    switch ($key) {
     case "NAME":
      $this->ServerName .= $val;
      break;
     case "TYPE":
      $this->ServerType .= $val;
      break;
    }
   }
  }
 }
 
 function endElement($parser, $tagName) {
  if ($tagName == "SERVER") {
   printf("<tr>\n");
   if ($this->ServerType) {
    printf("<td>%s <i>(%s)</i></td>\n", $this->ServerName,
$this->ServerType);
   } else {
    printf("<td>%s</td>\n", $this->ServerName);
   }
   
   if ($this->ServerPopulation > 0) {
    printf("<td>%s</td>\n", $this->ServerPopulation);
   } else {
    printf("<td>%s</td>\n", $this->ServerStatus);
   }
   printf("</tr>\n");
      
   $this->ServerName = "";
   $this->ServerType = "";
   $this->ServerPopulation = "";
   $this->ServerStatus = "";
   $this->insideitem = false;
  }
 }
 
 function serverData($parser, $data) {
  if ($this->insideitem) {
   switch ($this->tag) {
    case "POPULATION":
     $this->ServerPopulation .= $data;
     break;
    case "STATUS":
     $this->ServerStatus .= $data;
     break;
   }
  }
 }
}
     
$xml_parser = xml_parser_create();
$rss_parser = new RSSParser();
xml_set_object($xml_parser,&$rss_parser);
xml_set_element_handler($xml_parser, "startElement", "endElement");
xml_set_character_data_handler($xml_parser, "serverData");
$fp = fopen("http://www.camelotherald.com/xml/servers.xml","r
<http://www.camelotherald.com/xml/servers.xml> ")
 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);
xml_parser_free($xml_parser);
============
 
I've reviewed many online and book references and none have been helpful
in helping me to determine the way(s) in which I could do such a sort
from the parse code I have found to work very well.  I have tried
looking for a way to also append multiple XML RSS files in one (all
sharing the same structure) into one and then sort according by a value
there.  I am new to PHP and XML.
 
Any help and references would be greatly appreciated.
 
~PHP learner


Reply via email to