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