this is a simple scipt witch i worked out,, but it Dosent work due to: i cant get information from a deeper node... like this: <server> <servers name="ajs" blaa blaa blaa> <pop>100</pop> <relic name="george" type="melee"> <owner>nisse</owner </relic> </servers> </server>
i want to get: <relic name="george" type="melee"> and the dataelement after it,, but the thing i wrote dosent do that :/ any ideas? the program code is below as it is now the program dosent output any information,, hmm? regards patrick <?php $insideitem = false; $insidekeep = false; $insiderelic = false; $printed = false; $printedkeep = false; $tag = ""; $server = false; $da_server = ""; $da_lastguildupdate = ""; $da_lastcharupdate = ""; $da_population = ""; $da_type = ""; $da_status = ""; $da_relicorig = ""; $da_relicname = ""; $da_relictype = ""; $da_relicowner = ""; $da_keeporig = ""; $da_keepname = ""; $da_keepowner = ""; $da_keepclaimant = ""; function startElement($parser, $tagName, $attrs) { global $insideitem, $insidekeep, $insiderelic, $tag, $da_server, $da_type, $da_lastguildupdate, $da_lastcharupdate, $server, $da_relictype, $da_relicname, $da_relicorig, $da_keepname, $da_keeporig; if ($insideitem || $insiderelic || $insidekeep) { $tag = $tagName; } elseif ($tagName == "SERVER") { $insideitem = true; //while (list ($key, $val) = each ($attrs)) { //if ($key == "NAME" && $val == "Guinevere") { $server = true; $da_server = $val; print "Sant, $key - $val"; } //else { $server = false; } //} // end WHILE $server=true; if ($server) { while (list ($key, $val) = each ($attrs)) { switch($key) { case "TYPE" : $da_type = $val; break; case "LASTGUILDUPDATE" : $da_lastguildupdate = $val; break; case "LASTCHARUPDATE" : $da_lastcharupdate = $val; break; } } // end WHILE } } // MAJOR PROBLEM, CAUSE I CANT RETRIVE THIS INFORMATION elseif ($tagName == "RELIC" && $server) { $insiderelic = true; while (list ($key, $val) = each ($attrs)) { if ($key == "TYPE") { $da_relictype = $val; } if ($key == "NAME") { $da_relicname = $val; } if ($key == "REALM") { $da_relicorig = $val; } } // End While } // NOR THE KEEP INFORMATION elseif ($tagName == "KEEP" && $server) { $insidekeep = true; while (list ($key, $val) = each ($attrs)) { if ($key == "NAME") { $da_keepname = $val; } if ($key == "REALM") { $da_keeporig = $val; } } // End While } } function characterData($parser, $data) { global $insideitem, $insidekeep, $insiderelic, $tag, $da_population, $da_status, $da_relicowner, $da_keepowner, $da_keepclaimant; if ($insideitem) { switch ($tag) { case "POPULATION": $da_population .= $data; break; case "STATUS": $da_status .= $data; break; } } if ($insiderelic) { $da_relicowner .= $data; } if ($insidekeep) { switch ($tag) { case "OWNER" : $da_keepowner .= $data; break; case "CLAIMANT" : $da_keepclaimant .= $data; break; } } } function endElement($parser, $tagName) { global $insideitem, $insidekeep, $insiderelic, $tag, $da_server, $da_population, $da_type, $da_status, $da_lastguildupdate, $da_lastcharupdate, $da_relicname, $da_relicowner, $da_relicorig, $da_relictype, $printed, $printedkeep, $da_keeporig, $da_keepname, $da_keepowner, $da_keepclaimant; if ($tagName == "SERVER" && $server == true) { print "<TR><TD><b>Server</b></TD><TD><b>Status</b></TD><TD><b>Population</b></TD>< /TR>\n"; print "<TR><TD>$da_server"; if ($da_type) { print "(<i>$da_type</i>)"; } print "</TD>"; print "<TD>$da_status</TD>"; print "<TD>$da_population</TD></TR>\n"; print "<TR><TD></TD></TR>\n"; print "<TR><TD><b>Lastguildupdate</b></TD><TD><b>Lastcharupdate</b></TD><TD></TD>< /TR>\n"; print "<TR><TD>$da_lastguildupdate</TD><TD>$da_lastcharupdate</TD></TR>\n"; } elseif ($tagName == "RELIC" && $server == true) { if (!$printed) { print "<TR><TD></TD></TR>\n"; print "<TR><TD><b>Relic Name</b></TD><TD><b>Relic Owner</b></TD><TD><b>Relic Type</b></TD></TR>\n"; $printed = true; } print "<TR><TD>"; if ($da_relicorig == "Albion") { print "<font color=\#ff0000>$da_relicname</font>"; } elseif ($da_relicorig == "Midgard") { print "<font color=\#0000ff>$da_relicname</font>"; } else { print "<font color=\#00ff00>$da_relicname</font>"; } print "</TD><TD>"; if ($da_relicowner == "Albion") { print "<font color=\#ff0000>$da_relicowner</font>"; } elseif ($da_relicowner == "Midgard") { print "<font color=\#0000ff>$da_relicowner</font>"; } else { print "<font color=\#00ff00>$da_relicowner</font>"; } print "</TD><TD>$da_relictype</TD></TR>\n"; } elseif ($tagName == "KEEP" && $server == true) { if (!$printedkeep) { print "<TR><TD></TD></TR>\n"; print "<TR><TD><b>Keep Name</b></TD><TD><b>Keep Owner</b></TD><TD><b>Claimant</b></TD></TR>\n"; $printedkeep = true; } print "<TR><TD>"; if ($da_keeporig == "Albion") { print "<font color=\#ff0000>$da_keepname</font>"; } elseif ($da_keeporig == "Midgard") { print "<font color=\#0000ff>$da_keepname</font>"; } else { print "<font color=\#00ff00>$da_keepname</font>"; } print "</TD><TD>"; if ($da_keepowner == "Albion") { print "<font color=\#ff0000>$da_keepowner</font>"; } elseif ($da_keepowner == "Midgard") { print "<font color=\#0000ff>$da_keepowner</font>"; } else { print "<font color=\#00ff00>$da_keepowner</font>"; } print "</TD><TD>$da_keepclaimant</TD></TR>\n"; } $da_server = ""; $da_lastguildupdate = ""; $da_lastcharupdate = ""; $da_population = ""; $da_type = ""; $da_status = ""; $da_relicorig = ""; $da_relicname = ""; $da_relictype = ""; $da_relicowner = ""; $da_keeporig = ""; $da_keepname = ""; $da_keepowner = ""; $da_keepclaimant = ""; $insideitem = false; $insiderelic = false; $insidekeep = false; } // gotta have this for the php-NUKE block stuff to work global $da_totalpop; // Create an XML parser $xml_parser = xml_parser_create(); // Set the functions to handle opening and closing tags xml_set_element_handler($xml_parser, "startElement", "endElement"); // Set the function to handle blocks of character data xml_set_character_data_handler($xml_parser, "characterData"); // print "<hr>\n"; print "<TABLE BORDER=0 WIDTH=0%>\n"; print "<TR>Guild: Obliteration/Midgard</TD></TR>\n\n"; // Open the XML file for reading $fp = fopen("http://www.camelotherald.com/xml/servers.xml","r") or die("Error reading RSS data."); // Read the XML file 4KB at a time while ($data = fread($fp, 4096)) // Parse each 4KB chunk with the XML parser created above 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))); // Close the XML filef fclose($fp); print "</TABLE>\n"; // Free up memory used by the XML parser xml_parser_free($xml_parser); ?> "Manuel Lemos" <[EMAIL PROTECTED]> skrev i meddelandet [EMAIL PROTECTED]">news:[EMAIL PROTECTED]... > Hello, > > On 08/15/2002 10:30 AM, Pafo wrote: > > iwill rephrase my question, where can i find good xml-php links? > > how would you extract all information about the Guinevere server in this > > xmlpage, > > http://www.camelotherald.com/xml/servers.xml > > > > its aprox in the middle of the list, and i want all information there so i > > could display it on a page. > > They have PHP support for that already: > > http://www.camelotherald.com/xml.php#unix > > > > > -- > > Regards, > Manuel Lemos > -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php