Jump to content

[SOLVED] XML parser Class


intodesi

Recommended Posts

I am trying to use this class, yet when i load the page I get this

 

Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /home/techurch/public_html/zinto/pages/scripts/XMLParser.class.php on line 20

 

here is the class

 

class SimpleXmlParser {
public
# Variable Holding Parser
$SimpleParser = null,
$feedUrl = null,
# Variables to Hold the Data
$title = '',
$description = '',
$link = '',
$author = '',
$pubDate = '',
$insideitem = false,
$tag = '';

public function __construct($MyFeed) {
# To begin, I create an instance of the XML parser
# creates a new XML parser and returns a reousurce handle referencing
$this->SimpleParser = xml_parser_create();
# Assigns the Feed Source to the Member Variable
$this->feedUrl = $MyFeed;
# allows to use parser inside object
xml_set_object($this->SimpleParser, $this);
# Sets the element handler functions for the XML parser parser
xml_set_element_handler($this->SimpleParser, 'XmlParserFirstElement', 'XmlParserendElement');
# Sets the character data handler function for the XML parser parser
xml_set_character_data_handler($this->SimpleParser, 'characterData');
# Call to Parser Function
$this->ParseFeed();
}

public function SimpleXmlParser($MyFeed) {
# Purpose : Constructor, Which will initialize the XML Parser
$this->__construct($MyFeed);
}

public function XmlParserFirstElement($parser, $tagName, $attrs) {
# The Function Will be called, when ever the XML_PARSER Encounters a start Tag, in the XML File
if ($this->insideitem) {
$this->tag = $tagName;
} elseif (strtoupper($tagName)=='ITEM') {
$this->insideitem = true;
}
}

public function XmlParserendElement($parser, $tagName) {
# The Function Will be called, when ever the XML_PARSER Encounters a end Tag, in the XML File
if (strtoupper($tagName)=='ITEM') {
# pubDate element is made to display in HTML
printf("<div style='padding:5px;'><div class='news_date'>%s</div>", date("m.d.Y",strtotime($this->pubdate)));

# Description element is made to display in HTML
printf("<div ><a class='news_text' href='%s' target='new'>%s</a><br /></div><div style='clear:both'></div></div>", trim($this->link), htmlspecialchars(trim($this->title)));
# Deallocation of all Global Variables
$this->title = '';
$this->description = '';
$this->link = '';
$this->pubdate = '';
$this->insideitem = false;
}
}

# Function will be called by the Parser when the end tage of the element is processed. Requires Two Permeters
public function characterData($parser, $data) {
# Permeters: the parser instance and the string containing the data.
if ($this->insideitem) {
switch (strtoupper($this->tag)) {
case 'TITLE':
$this->title .= $data;
break;
case 'DESCRIPTION':
$this->description .= $data;
break;
case 'LINK':
$this->link .= $data;
break;
case 'PUBDATE':
$this->pubdate .= $data;
break;
}
}
}

public function ParseFeed(){
# This is the Place we need to Do error Handling for the XML file, which is not done in this class
# Open the XML file for reading.
# This part will be executed when we compiler is Unable to Open the XML Feed
$fp = fopen($this->feedUrl, 'r') or die('Oops! Unexpected Error While Reading the Feed');
# Starts reading the contents of the file, 4K at a time, and put it in the variable “$data”
while ($data = fread($fp, 4096)) {
xml_parse($this->SimpleParser, $data, feof($fp));
}
# Perform Some Clean Up Work Before Closing the File.
# Closing the XML File
fclose($fp);
# Release the XML Parser
xml_parser_free($this->SimpleParser);
}
}

 

Thanks for any help

Link to comment
Share on other sites

sorry, line 20 would be in red

 

class SimpleXmlParser {

public

# Variable Holding Parser

$SimpleParser = null,

$feedUrl = null,

# Variables to Hold the Data

$title = '',

$description = '',

$link = '',

$author = '',

$pubDate = '',

$insideitem = false,

$tag = '';

 

and I will try the simplexml thanks (will that parse offsite rss feeds? thats my goal)

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

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.