Joomla Platform  13.1
Documentation des API du framework Joomla Platform
 Tout Classes Espaces de nommage Fichiers Fonctions Variables Pages
Référence de la classe JFeedParser
+ Graphe d'héritage de JFeedParser:

Liste de tous les membres

Fonctions membres publiques

 __construct (XMLReader $stream)
 parse ()
 registerNamespace ($prefix, JFeedParserNamespace $namespace)

Fonctions membres protégées

 initialise ()
 processElement (JFeed $feed, SimpleXMLElement $el, array $namespaces)
 fetchNamespace ($prefix)
 moveToNextElement ($name=null)
 moveToClosingElement ()

Attributs protégés

 $entryElementName = 'entry'
 $namespaces = array()
 $stream

Description détaillée

Définition à la ligne 19 du fichier parser.php.


Documentation des constructeurs et destructeur

JFeedParser::__construct ( XMLReader  $stream)

Constructor.

Paramètres:
XMLReader$streamThe XMLReader stream object for the feed.
Depuis:
12.3

Définition à la ligne 52 du fichier parser.php.

{
$this->stream = $stream;
}

Documentation des fonctions membres

JFeedParser::fetchNamespace (   $prefix)
protected

Method to get a namespace object for a given namespace prefix.

Paramètres:
string$prefixThe XML prefix for which to fetch the namespace object.
Renvoie:
mixed JFeedParserNamespace or false if none exists.
Depuis:
12.3

Définition à la ligne 202 du fichier parser.php.

{
if (isset($this->namespaces[$prefix]))
{
return $this->namespaces[$prefix];
}
$className = get_class($this) . ucfirst($prefix);
if (class_exists($className))
{
$this->namespaces[$prefix] = new $className;
return $this->namespaces[$prefix];
}
return false;
}
JFeedParser::initialise ( )
abstractprotected

Method to initialise the feed for parsing. If child parsers need to detect versions or other such things this is where you'll want to implement that logic.

Renvoie:
void
Depuis:
12.3

Réimplémentée dans JFeedParserRss, et JFeedParserAtom.

JFeedParser::moveToClosingElement ( )
protected

Method to move the stream parser to the closing XML node of the current element.

Renvoie:
void
Depuis:
12.3
Exceptions:
RuntimeExceptionIf the closing tag cannot be found.

Définition à la ligne 259 du fichier parser.php.

{
// If we are on a self-closing tag then there is nothing to do.
if ($this->stream->isEmptyElement)
{
return;
}
// Get the name and depth for the current node so that we can match the closing node.
$name = $this->stream->name;
$depth = $this->stream->depth;
// Only keep looking until the end of the stream.
while ($this->stream->read())
{
// If we have an END_ELEMENT node with the same name and depth as the node we started with we have a bingo. :-)
if (($this->stream->name == $name) && ($this->stream->depth == $depth) && ($this->stream->nodeType == XMLReader::END_ELEMENT))
{
return;
}
}
throw new RuntimeException('Unable to find the closing XML node.');
}
JFeedParser::moveToNextElement (   $name = null)
protected

Method to move the stream parser to the next XML element node.

Paramètres:
string$nameThe name of the element for which to move the stream forward until is found.
Renvoie:
boolean True if the stream parser is on an XML element node.
Depuis:
12.3

Définition à la ligne 230 du fichier parser.php.

{
// Only keep looking until the end of the stream.
while ($this->stream->read())
{
// As soon as we get to the next ELEMENT node we are done.
if ($this->stream->nodeType == XMLReader::ELEMENT)
{
// If we are looking for a specific name make sure we have it.
if (isset($name) && ($this->stream->name != $name))
{
continue;
}
return true;
}
}
return false;
}
JFeedParser::parse ( )

Method to parse the feed into a JFeed object.

Renvoie:
JFeed
Depuis:
12.3

Définition à la ligne 64 du fichier parser.php.

{
$feed = new JFeed;
// Detect the feed version.
$this->initialise();
// Let's get this party started...
do
{
// Expand the element for processing.
$el = new SimpleXMLElement($this->stream->readOuterXml());
// Get the list of namespaces used within this element.
$ns = $el->getNamespaces(true);
// Get an array of available namespace objects for the element.
$namespaces = array();
foreach ($ns as $prefix => $uri)
{
// Ignore the empty namespace prefix.
if (empty($prefix))
{
continue;
}
// Get the necessary namespace objects for the element.
$namespace = $this->fetchNamespace($prefix);
if ($namespace)
{
$namespaces[] = $namespace;
}
}
// Process the element.
$this->processElement($feed, $el, $namespaces);
// Skip over this element's children since it has been processed.
}
while ($this->moveToNextElement());
return $feed;
}
JFeedParser::processElement ( JFeed  $feed,
SimpleXMLElement  $el,
array  $namespaces 
)
protected

Method to parse a specific feed element.

Paramètres:
JFeed$feedThe JFeed object being built from the parsed feed.
SimpleXMLElement$elThe current XML element object to handle.
array$namespacesThe array of relevant namespace objects to process for the element.
Renvoie:
void
Depuis:
12.3

Définition à la ligne 149 du fichier parser.php.

Références JFeed\addEntry().

{
// Build the internal method name.
$method = 'handle' . ucfirst($el->getName());
// If we are dealing with an item then it is feed entry time.
if ($el->getName() == $this->entryElementName)
{
// Create a new feed entry for the item.
$entry = new JFeedEntry;
// First call the internal method.
$this->processFeedEntry($entry, $el);
foreach ($namespaces as $namespace)
{
if ($namespace instanceof JFeedParserNamespace)
{
$namespace->processElementForFeedEntry($entry, $el);
}
}
// Add the new entry to the feed.
$feed->addEntry($entry);
}
// Otherwise we treat it like any other element.
else
{
// First call the internal method.
if (is_callable(array($this, $method)))
{
$this->$method($feed, $el);
}
foreach ($namespaces as $namespace)
{
if ($namespace instanceof JFeedParserNamespace)
{
$namespace->processElementForFeed($feed, $el);
}
}
}
}

+ Voici le graphe d'appel pour cette fonction :

JFeedParser::registerNamespace (   $prefix,
JFeedParserNamespace  $namespace 
)

Method to register a namespace handler object.

Paramètres:
string$prefixThe XML namespace prefix for which to register the namespace object.
JFeedParserNamespace$namespaceThe namespace object to register.
Renvoie:
JFeed
Depuis:
12.3

Définition à la ligne 121 du fichier parser.php.

{
$this->namespaces[$prefix] = $namespace;
return $this;
}

Documentation des données membres

JFeedParser::$entryElementName = 'entry'
protected

Réimplémentée dans JFeedParserRss.

Définition à la ligne 27 du fichier parser.php.

JFeedParser::$namespaces = array()
protected

Définition à la ligne 35 du fichier parser.php.

JFeedParser::$stream
protected

Définition à la ligne 43 du fichier parser.php.


La documentation de cette classe a été générée à partir du fichier suivant :