Jump to content

Archived

This topic is now archived and is closed to further replies.

helppingme

PHP XML Reader Help

Recommended Posts

I have a php xml reader that works perfect with:

<example>

but won't with

<example url="http://www.example/index.html" info="Example">

Can anyone help??

heres the code:

[code]<?php

set_time_limit(0);

$file = "http://www.example/example.xml";

$rss_channel = array();
$currently_writing = "";
$main = "";
$item_counter = 0;

function startElement($parser, $name, $attrs) {
      global $rss_channel, $currently_writing, $main;
      switch($name) {
          case "RSS":
          case "RDF:RDF":
          case "ITEMS":
              $currently_writing = "";
              break;
          case "CHANNEL":
              $main = "CHANNEL";
              break;
          case "IMAGE":
              $main = "IMAGE";
              $rss_channel["IMAGE"] = array();
              break;
          case "ITEM":
              $main = "ITEMS";
              break;
          default:
              $currently_writing = $name;
              break;
      }
}

function endElement($parser, $name) {
      global $rss_channel, $currently_writing, $item_counter;
      $currently_writing = "";
      if ($name == "ITEM") {
          $item_counter++;
      }
}

function characterData($parser, $data) {
    global $rss_channel, $currently_writing, $main, $item_counter;
    if ($currently_writing != "") {
        switch($main) {
            case "CHANNEL":
                if (isset($rss_channel[$currently_writing])) {
                    $rss_channel[$currently_writing] .= $data;
                } else {
                    $rss_channel[$currently_writing] = $data;
                }
                break;
            case "IMAGE":
                if (isset($rss_channel[$main][$currently_writing])) {
                    $rss_channel[$main][$currently_writing] .= $data;
                } else {
                    $rss_channel[$main][$currently_writing] = $data;
                }
                break;
            case "ITEMS":
                if (isset($rss_channel[$main][$item_counter][$currently_writing])) {
                    $rss_channel[$main][$item_counter][$currently_writing] .= $data;
                } else {
                    //print ("rss_channel[$main][$item_counter][$currently_writing] = $data<br>");
                    $rss_channel[$main][$item_counter][$currently_writing] = $data;
                }
                break;
        }
    }
}

$xml_parser = xml_parser_create();
xml_set_element_handler($xml_parser, "startElement", "endElement");
xml_set_character_data_handler($xml_parser, "characterData");
if (!($fp = fopen($file, "r"))) {
    die("could not open XML input");
}

while ($data = fread($fp, 4096)) {
    if (!xml_parse($xml_parser, $data, feof($fp))) {
        die(sprintf("XML error: %s at line %d",
                    xml_error_string(xml_get_error_code($xml_parser)),
                    xml_get_current_line_number($xml_parser)));
    }
}
xml_parser_free($xml_parser);

// output as HTML
print ("<html><head><title>PHP RSS Reader</title></head><body>");
if (isset($rss_channel["IMAGE"])) {
    print ("<a href=\"" . $rss_channel["LINK"] . "\" target=\"_blank\"><img border=\"0\" src=\"" . $rss_channel["IMAGE"]["URL"] . "\" align=\"middle\" alt=\"" . $rss_channel["IMAGE"]["TITLE"] . "\"></a>&nbsp;&nbsp;<font size=\"5\">" . $rss_channel["TITLE"] . "</font><br><br>");
} else {
    print ("<font size=\"5\">" . $rss_channel["TITLE"] . "</font><br><br>");
}
print ("<i>" . $rss_channel["DESCRIPTION"] . "</i><br><br>");
if (isset($rss_channel["ITEMS"])) {
    if (count($rss_channel["ITEMS"]) > 0) {
        for($i = 0;$i < count($rss_channel["ITEMS"]);$i++) {
            print ("\n<table width=\"100%\" border=\"1\"><tr><td width=\"100%\"><a href=\"" . $rss_channel["ITEMS"][$i]["LINK"] . "\" target=\"_blank\"><h2>" . $rss_channel["ITEMS"][$i]["TITLE"] . "</h2></a></b>");
            print ("<i>" . html_entity_decode($rss_channel["ITEMS"][$i]["DESCRIPTION"]) . "</i>");
            print ("</td></tr></table><br>");
        }
    } else {
        print ("<b>There are no articles in this feed.</b>");
    }
}
print ("</body></html>");
?>[/code]

Share this post


Link to post
Share on other sites
You might want to explain in more detail what the actual problem is!

Share this post


Link to post
Share on other sites
Sorry had already posted, but still need help!!!

Go here for old post: http://www.phpfreaks.com/forums/index.php/topic,101233.0.html

Share this post


Link to post
Share on other sites
Afraid not... multiposting is frowned upon.

Share this post


Link to post
Share on other sites
[quote author=thorpe link=topic=101240.msg400409#msg400409 date=1153402539]
Afraid not... multiposting is frowned upon.
[/quote]

I'm really sorry; can I delete the original post?

Share this post


Link to post
Share on other sites
Your other post is no different to this one anyway.

As I said, you need to explain in more details what the problem is. Just comming here stating something doesn't work does not help us. A good part of asking for help is making it easy for us to want to help.

Share this post


Link to post
Share on other sites
I have a php xml reader that works perfect with most XML feeds, but I'm trying to read a xml feed that doesn't use the standard format:


This is the normal format...
[code]<example>[/code]


The code below is what I want the XML feed reader to read, the URL address and the info...??

[code]<example url="http://www.example/index.html" info="Example">[/code]

Can anyone help revise the php code to accept this and read the info??

Share this post


Link to post
Share on other sites

×

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.