class SimpleXMLFIReader in Feed Import 8
SimpleXML Reader class, good for small-medium XML files.
Hierarchy
- class \Drupal\feed_import_base\FeedImportConfigurable
- class \Drupal\feed_import_base\FeedImportReader
- class \Drupal\feed_import_base\FeedImportSimpleXPathReader
- class \Drupal\feed_import_base\SimpleXMLFIReader
- class \Drupal\feed_import_base\FeedImportSimpleXPathReader
- class \Drupal\feed_import_base\FeedImportReader
Expanded class hierarchy of SimpleXMLFIReader
File
- feed_import_base/
src/ SimpleXMLFIReader.php, line 7
Namespace
Drupal\feed_import_baseView source
class SimpleXMLFIReader extends FeedImportSimpleXPathReader {
// Namespace uris.
protected $nsuri;
// Namespace names.
protected $nsname;
// Namespace functions.
protected $nsfunc;
/**
* {@inheritdoc}
*/
public function init() {
// Set default required options.
$this->options += array(
'class' => 'Drupal\\feed_import_base\\SimpleXMLElement',
'options' => array(
LIBXML_NOCDATA,
),
'raw' => '',
'stream' => NULL,
);
$opts = 0;
foreach ($this->options['options'] as $opt) {
$opts |= $opt;
}
$this->items = FALSE;
// Try to fetch from URL.
if ($this->options['url']) {
if ($ctx = $this
->getStreamContext($this->options['stream'])) {
libxml_set_streams_context($ctx);
}
$this->items = simplexml_load_file($this->options['url'], $this->options['class'], $opts);
}
elseif ($this->options['raw'] = trim($this->options['raw'])) {
$this->items = simplexml_load_string($this->options['raw'], $this->options['class'], $opts);
}
else {
// No raw or url resource provided.
return FALSE;
}
// Add X inclusions, using a simple hack for SimpleXMLElement
if ($this->items instanceof SimpleXMLElement && $opts & LIBXML_XINCLUDE) {
dom_import_simplexml($this->items)->ownerDocument
->xinclude();
}
if (!$this->items) {
return FALSE;
}
// Not needed anymore.
unset($this->options['raw'], $opts);
// Check for namespace settings.
if (!empty($this->options['namespaces'])) {
if (!is_array($this->options['namespaces'])) {
$this->options['namespaces'] = static::cleanLines($this->options['namespaces']);
}
$this->nsname = $this->nsuri = array();
foreach ($this->options['namespaces'] as $key => &$ns) {
$ns = explode('=', $ns, 2);
if (count($ns) != 2 || empty($ns[0]) || empty($ns[1])) {
unset($this->options['namespaces'][$key]);
continue;
}
list($this->nsname[], $this->nsuri[]) = $ns;
// Set namespace.
$this->items
->registerXPathNamespace($ns[0], $ns[1]);
}
// Not needed anymore.
unset($this->options['namespaces'], $ns);
if ($this->nsname) {
$this->nsfunc = array(
NULL,
'registerXPathNamespace',
);
}
}
else {
$this->nsname = $this->nsuri = NULL;
}
if (!($this->items = $this->items
->xpath($this->options['parent']))) {
return FALSE;
}
return TRUE;
}
/**
* {@inheritdoc}
*/
public function get() {
// Get next item.
$item = array_shift($this->items);
// Register namespaces if needed.
if ($this->nsfunc) {
$this->nsfunc[0] =& $item;
array_map($this->nsfunc, $this->nsname, $this->nsuri);
}
return $item;
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
FeedImportConfigurable:: |
protected | property | ||
FeedImportConfigurable:: |
public static | function | Helper function to get lines of a string | |
FeedImportConfigurable:: |
public | function | Sets options for this instance | 4 |
FeedImportReader:: |
protected | property | ||
FeedImportReader:: |
public | function | Override this to preprocess your paths before they are used in map(). | 2 |
FeedImportReader:: |
public | function | Returns a stream context | |
FeedImportReader:: |
final public | function | Constructor of reader. Constructor is final but you'll have to implement init() to init your reader. | |
FeedImportReader:: |
public | function | Destructor. | 2 |
FeedImportSimpleXPathReader:: |
public | function |
Returns a value mapped from obj by path. Overrides FeedImportReader:: |
|
SimpleXMLFIReader:: |
protected | property | ||
SimpleXMLFIReader:: |
protected | property | ||
SimpleXMLFIReader:: |
protected | property | ||
SimpleXMLFIReader:: |
public | function |
This method returns the next available item or NULL if there are no items
left. Overrides FeedImportReader:: |
|
SimpleXMLFIReader:: |
public | function |
Here you'll init your reader. Overrides FeedImportReader:: |