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
https://forums.phpfreaks.com/topic/102956-solved-xml-parser-class/
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)

Archived

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

×
×
  • 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.