Forum Moderators: coopster

Message Too Old, No Replies

PHP XML parser not working.... :( pls help...

         

irock

7:58 am on Jun 13, 2003 (gmt 0)

WebmasterWorld Senior Member 10+ Year Member



I was trying to list out some simple XML nodes with this sample (modified) PHP parser I grabbed from Sitepoint. Unforunately, this piece of codes return nothing... Anyone knows why? I have copied the codes and the XML feed structure. I only need the nodes under <store-offer>.

I have already successfully displayed this XML feed via XSLT, but I just found out I need to store these data into mySQL database... somehow XSLT is not designed for this purpose.

<html>
<head>
<title>Current SitePoint Articles</title>
</head>
<body>
<h2>Currently on SitePoint.com...</h2>
<dl>
<?php

$insideitem = false;
$tag = "";
$storename = "";
$storelogo = "";
$offerprice = "";
$offerdescription = "";
$offerurl = "";

function startElement($parser, $name, $attrs) {
global $insideitem, $tag, $storename, $offerprice, $offerurl, $offerlogo, $offerdescription;
if ($insideitem) {
$tag = $name;
} elseif ($name == "store-offer") {
$insideitem = true;
}
}

function endElement($parser, $name) {
global $insideitem, $tag, $storename, $offerprice, $offerurl, $offerlogo, $offerdescription;
// print "yes";
if ($name == "store-offer") {
printf("<dt><b><a href='%s'>%s</a></b></dt>",
trim($offerurl),htmlspecialchars(trim($storename)));
printf("<dd>%s</dd>",htmlspecialchars(trim($offerprice)));
$storename = "";
$offerprice = "";
$offerurl = "";
$offerlogo = "";
$offerdescription = "";
$insideitem = false;
}
}

function characterData($parser, $data) {
global $insideitem, $tag, $storename, $offerprice, $offerurl, $offerlogo, $offerdescription;
if ($insideitem) {
switch ($tag) {
case "store-name":
$storename .= $data;
break;
case "offer-price":
$offerprice .= $data;
break;
case "offer-logo":
$offerlogo .= $data;
break;
case "offer-description":
$offerdescription .= $data;
break;
case "offer-url":
$offerurl .= $data;
break;
}
}
}

$xml_parser = xml_parser_create();
xml_set_element_handler($xml_parser, "startElement", "endElement");
xml_set_character_data_handler($xml_parser, "characterData");
$fp = fopen("********* URL Removed *************","r")
or die("Error reading RSS data.");
while ($data = fread($fp, 4096))
// echo yes;
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);

?>
</dl>
</body>
</html>

-------------------------------------------

<dsp>

<result>
...
</result>

<phrase>
...
</phrase>

<domain>
<title>...</title>
<url>...</url>

<store-offers>

<store-offer>
<store-name>
</store-name>
<store-logo>
</store-logo>
<offer-description>
</offer-description>
<offer-price>
</offer-price>
<offer-url>
</offer-url>
</store-offer>

<store-offer>
<store-name>
</store-name>
<store-logo>
</store-logo>
<offer-description>
</offer-description>
<offer-price>
</offer-price>
<offer-url>
</offer-url>
</store-offer>

<store-offer>
<store-name>
</store-name>
<store-logo>
</store-logo>
<offer-description>
</offer-description>
<offer-price>
</offer-price>
<offer-url>
</offer-url>
</store-offer>

</store-offers>

</domain>
</dsp>

Thanks for any assistance...

irock

4:06 pm on Jun 13, 2003 (gmt 0)

WebmasterWorld Senior Member 10+ Year Member



Bump...

could anyone please help?