95 lines
3.4 KiB
PHP
95 lines
3.4 KiB
PHP
|
<?php
|
||
|
|
||
|
namespace Safe;
|
||
|
|
||
|
use Safe\Exceptions\SimplexmlException;
|
||
|
|
||
|
/**
|
||
|
* This function takes a node of a DOM
|
||
|
* document and makes it into a SimpleXML node. This new object can
|
||
|
* then be used as a native SimpleXML element.
|
||
|
*
|
||
|
* @param \DOMNode $node A DOM Element node
|
||
|
* @param string $class_name You may use this optional parameter so that
|
||
|
* simplexml_import_dom will return an object of
|
||
|
* the specified class. That class should extend the
|
||
|
* SimpleXMLElement class.
|
||
|
* @return \SimpleXMLElement Returns a SimpleXMLElement.
|
||
|
* @throws SimplexmlException
|
||
|
*
|
||
|
*/
|
||
|
function simplexml_import_dom(\DOMNode $node, string $class_name = "SimpleXMLElement"): \SimpleXMLElement
|
||
|
{
|
||
|
error_clear_last();
|
||
|
$result = \simplexml_import_dom($node, $class_name);
|
||
|
if ($result === false) {
|
||
|
throw SimplexmlException::createFromPhpError();
|
||
|
}
|
||
|
return $result;
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
* Convert the well-formed XML document in the given file to an object.
|
||
|
*
|
||
|
* @param string $filename Path to the XML file
|
||
|
*
|
||
|
* Libxml 2 unescapes the URI, so if you want to pass e.g.
|
||
|
* b&c as the URI parameter a,
|
||
|
* you have to call
|
||
|
* simplexml_load_file(rawurlencode('http://example.com/?a=' .
|
||
|
* urlencode('b&c'))). Since PHP 5.1.0 you don't need to do
|
||
|
* this because PHP will do it for you.
|
||
|
* @param string $class_name You may use this optional parameter so that
|
||
|
* simplexml_load_file will return an object of
|
||
|
* the specified class. That class should extend the
|
||
|
* SimpleXMLElement class.
|
||
|
* @param int $options Since PHP 5.1.0 and Libxml 2.6.0, you may also use the
|
||
|
* options parameter to specify additional Libxml parameters.
|
||
|
* @param string $ns Namespace prefix or URI.
|
||
|
* @param bool $is_prefix TRUE if ns is a prefix, FALSE if it's a URI;
|
||
|
* defaults to FALSE.
|
||
|
* @return \SimpleXMLElement Returns an object of class SimpleXMLElement with
|
||
|
* properties containing the data held within the XML document.
|
||
|
* @throws SimplexmlException
|
||
|
*
|
||
|
*/
|
||
|
function simplexml_load_file(string $filename, string $class_name = "SimpleXMLElement", int $options = 0, string $ns = "", bool $is_prefix = false): \SimpleXMLElement
|
||
|
{
|
||
|
error_clear_last();
|
||
|
$result = \simplexml_load_file($filename, $class_name, $options, $ns, $is_prefix);
|
||
|
if ($result === false) {
|
||
|
throw SimplexmlException::createFromPhpError();
|
||
|
}
|
||
|
return $result;
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
* Takes a well-formed XML string and returns it as an object.
|
||
|
*
|
||
|
* @param string $data A well-formed XML string
|
||
|
* @param string $class_name You may use this optional parameter so that
|
||
|
* simplexml_load_string will return an object of
|
||
|
* the specified class. That class should extend the
|
||
|
* SimpleXMLElement class.
|
||
|
* @param int $options Since PHP 5.1.0 and Libxml 2.6.0, you may also use the
|
||
|
* options parameter to specify additional Libxml parameters.
|
||
|
* @param string $ns Namespace prefix or URI.
|
||
|
* @param bool $is_prefix TRUE if ns is a prefix, FALSE if it's a URI;
|
||
|
* defaults to FALSE.
|
||
|
* @return \SimpleXMLElement Returns an object of class SimpleXMLElement with
|
||
|
* properties containing the data held within the xml document.
|
||
|
* @throws SimplexmlException
|
||
|
*
|
||
|
*/
|
||
|
function simplexml_load_string(string $data, string $class_name = "SimpleXMLElement", int $options = 0, string $ns = "", bool $is_prefix = false): \SimpleXMLElement
|
||
|
{
|
||
|
error_clear_last();
|
||
|
$result = \simplexml_load_string($data, $class_name, $options, $ns, $is_prefix);
|
||
|
if ($result === false) {
|
||
|
throw SimplexmlException::createFromPhpError();
|
||
|
}
|
||
|
return $result;
|
||
|
}
|