SymfonyWorld Online 2022 Winter Edition


(PHP 5, PHP 7, PHP 8)

DOMDocument::xinclude Sustituye XIncludes en un objeto DOMDocument


public DOMDocument::xinclude(int $options = 0): int

Este método sustituye » XIncludes en un objeto DOMDocument.


Debido a que libxml2 resuelve automáticamente entidades, este método producirá resultados inesperados si el fichero XML incluido tiene un DTD adjunto.



Parámetros de libxml. Disponible desde PHP 5.1.0 y Libxml 2.6.7.

Valores devueltos

Devuelve el número de XIncludes del documento, -1 si falló algún proceso, o false si no hubo sustituciones.


Ejemplo #1 Ejemplo de DOMDocument::xinclude()


= <<<EOD
<?xml version="1.0" ?>
<chapter xmlns:xi="">
 <title>Books of the other guy..</title>
  <xi:include href="book.xml">
    <error>xinclude: book.xml not found</error>

$dom = new DOMDocument;

// vamos a tener una impresión buena
$dom->preserveWhiteSpace false;
$dom->formatOutput true;

// cargar la cadena XML definida arriba

// sustituir xincludes



El resultado del ejemplo sería algo similar a:

<?xml version="1.0"?>
<chapter xmlns:xi="">
  <title>Books of the other guy..</title>
    <row xml:base="/home/didou/book.xml">
       <entry>The Grapes of Wrath</entry>
       <entry>John Steinbeck</entry>
    <row xml:base="/home/didou/book.xml">
       <entry>The Pearl</entry>
       <entry>John Steinbeck</entry>
    <row xml:base="/home/didou/book.xml">
       <entry>Amine Maalouf</entry>

add a note

User Contributed Notes 1 note

nicolas_rainardNOSPAM at yahoo dot fr
14 years ago
If you use the loadXML() method instead of the load() one (let's say, to process the XML string before loading and parsing it), you will have problems with xinclude(), because the parser will not know where to find the files to include.
Using chdir() before xinclude() will not help.

The solution is to set the documentURI property of the DOMDocument object accordingly to it's original filename, and everything will work fine !


= file_get_contents($file);
$xml = do_something_with($xml);

$doc = new DOMDocument;
$doc->documentURI = $file;

To Top