cl01/wp-content/plugins/blaze-demo-importer/wordpress-importer/class-wxr-parser.php
2025-02-24 12:39:24 +08:00

54 lines
2.2 KiB
PHP
Executable File

<?php
/**
* WordPress eXtended RSS file parser implementations
*
* @package WordPress
* @subpackage Importer
*/
/**
* WordPress Importer class for managing parsing of WXR files.
*/
class BLAZE_DEMO_IMPORTER_WXR_Parser {
function parse($file) {
// Attempt to use proper XML parsers first
if (extension_loaded('simplexml')) {
$parser = new BLAZE_DEMO_IMPORTER_WXR_Parser_SimpleXML;
$result = $parser->parse($file);
// If SimpleXML succeeds or this is an invalid WXR file then return the results
if (!is_wp_error($result) || 'SimpleXML_parse_error' != $result->get_error_code())
return $result;
} else if (extension_loaded('xml')) {
$parser = new BLAZE_DEMO_IMPORTER_WXR_Parser_XML;
$result = $parser->parse($file);
// If XMLParser succeeds or this is an invalid WXR file then return the results
if (!is_wp_error($result) || 'XML_parse_error' != $result->get_error_code())
return $result;
}
// We have a malformed XML file, so display the error and fallthrough to regex
if (isset($result) && defined('IMPORT_DEBUG') && IMPORT_DEBUG) {
echo '<pre>';
if ('SimpleXML_parse_error' == $result->get_error_code()) {
foreach ($result->get_error_data() as $error)
echo $error->line . ':' . $error->column . ' ' . esc_html($error->message) . "\n";
} else if ('XML_parse_error' == $result->get_error_code()) {
$error = $result->get_error_data();
echo $error[0] . ':' . $error[1] . ' ' . esc_html($error[2]);
}
echo '</pre>';
echo '<p><strong>' . __('There was an error when reading this WXR file', 'blaze-demo-importer') . '</strong><br />';
echo __('Details are shown above. The importer will now try again with a different parser...', 'blaze-demo-importer') . '</p>';
}
// use regular expressions if nothing else available or this is bad XML
$parser = new BLAZE_DEMO_IMPORTER_WXR_Parser_Regex;
return $parser->parse($file);
}
}