56 lines
1.3 KiB
PHP
Executable File
56 lines
1.3 KiB
PHP
Executable File
<?php
|
|
|
|
namespace Noodlehaus\FileParser;
|
|
|
|
use Noodlehaus\Exception\ParseException;
|
|
|
|
/**
|
|
* XML file parser
|
|
*
|
|
* @package Config
|
|
* @author Jesus A. Domingo <jesus.domingo@gmail.com>
|
|
* @author Hassan Khan <contact@hassankhan.me>
|
|
* @link https://github.com/noodlehaus/config
|
|
* @license MIT
|
|
*/
|
|
class Xml implements FileParserInterface
|
|
{
|
|
/**
|
|
* {@inheritDoc}
|
|
* Parses an XML file as an array
|
|
*
|
|
* @throws ParseException If there is an error parsing the XML file
|
|
*/
|
|
public function parse($path)
|
|
{
|
|
libxml_use_internal_errors(true);
|
|
|
|
$data = simplexml_load_file($path, null, LIBXML_NOERROR);
|
|
|
|
if ($data === false) {
|
|
$errors = libxml_get_errors();
|
|
$latestError = array_pop($errors);
|
|
$error = array(
|
|
'message' => $latestError->message,
|
|
'type' => $latestError->level,
|
|
'code' => $latestError->code,
|
|
'file' => $latestError->file,
|
|
'line' => $latestError->line,
|
|
);
|
|
throw new ParseException($error);
|
|
}
|
|
|
|
$data = json_decode(json_encode($data), true);
|
|
|
|
return $data;
|
|
}
|
|
|
|
/**
|
|
* {@inheritDoc}
|
|
*/
|
|
public function getSupportedExtensions()
|
|
{
|
|
return array('xml');
|
|
}
|
|
}
|