Estas constantes son definidas por esta extensión, y solo están disponibles si esta extensión ha sido compilada con PHP, o bien cargada en tiempo de ejecución.
LIBXML_BIGLINES
(int )
Nota:
Disponible únicamente en PHP 7.0.0 con Libxml >= 2.9.0
LIBXML_COMPACT
(int )
Nota:
Disponible únicamente en Libxml >= 2.6.21
LIBXML_DTDATTR
(int )
Activar la carga de atributos DTD permitirá la recuperación de entidades externas.
La constante LIBXML_NO_XXE puede ser utilizada para evitar esto (disponible únicamente en Libxml >= 2.13.0, a partir de PHP 8.4.0).
LIBXML_DTDLOAD
(int )
Activar la carga de subconjuntos externos permitirá la recuperación de entidades externas.
La constante LIBXML_NO_XXE puede ser utilizada para evitar esto (disponible únicamente en Libxml >= 2.13.0, a partir de PHP 8.4.0).
LIBXML_DTDVALID
(int )
Activar la validación de DTD puede facilitar ataques por entidades externas XML (XXE).
La constante LIBXML_NO_XXE puede ser utilizada para evitar esto (disponible únicamente en Libxml >= 2.13.0, a partir de PHP 8.4.0).
LIBXML_HTML_NOIMPLIED
(int )
Nota:
Disponible únicamente en Libxml >= 2.7.7 (desde PHP >= 5.4.0)
LIBXML_HTML_NODEFDTD
(int )
Nota:
Disponible únicamente en Libxml >= 2.7.8 (desde PHP >= 5.4.0)
LIBXML_LOADED_VERSION
(string )
LIBXML_NOBLANKS
(int )
LIBXML_NOCDATA
(int )
LIBXML_NOEMPTYTAG
(int )
<br/> en
<br></br>)
Nota:
Esta opción está actualmente disponible únicamente con las funciones DOMDocument::save y DOMDocument::saveXML.
LIBXML_NOENT
(int )
Activar la sustitución de entidades puede facilitar ataques XML External Entity (XXE).
LIBXML_NOERROR
(int )
LIBXML_NONET
(int )
LIBXML_NOWARNING
(int )
LIBXML_NOXMLDECL
(int )
Nota:
Disponible únicamente en Libxml >= 2.6.21
LIBXML_NO_XXE
(int )
Nota:
Disponible únicamente en Libxml >= 2.13.0, a partir de PHP 8.4.0
LIBXML_NSCLEAN
(int )
LIBXML_PARSEHUGE
(int )
Dado que esto aumenta los límites codificados en el código, solo debería utilizarse con datos de confianza. Aumentar el límite de profundidad sobre datos no confiables puede provocar un consumo excesivo de recursos, como un desbordamiento de pila al procesar un documento profundamente anidado.
Nota:
Disponible únicamente desde Libxml >= 2.7.0 (desde PHP >= 5.3.2 y PHP >= 5.2.12)
LIBXML_PEDANTIC
(int )
Nota:
Disponible a partir de PHP >= 5.4.0
LIBXML_RECOVER
(int )
Nota:
Disponible únicamente a partir de PHP 8.4.0
LIBXML_XINCLUDE
(int )
LIBXML_ERR_ERROR
(int )
LIBXML_ERR_FATAL
(int )
LIBXML_ERR_NONE
(int )
LIBXML_ERR_WARNING
(int )
LIBXML_VERSION
(int )
LIBXML_DOTTED_VERSION
(string )
LIBXML_SCHEMA_CREATE
(int )
Nota:
Disponible únicamente en Libxml >= 2.6.14 (a partir de PHP >= 5.5.2)
When inserting XML DOM Elements inside existing XML DOM Elements that I loaded from an XML file using the following code, none of my new elements were formatted correctly, they just showed up on one line:
<?php
$dom = DOMDocument::load('file.xml');
$dom->formatOutput = true;
//$dom->add some new elements with child nodes somewhere inside the loaded XML using insertBefore();
$dom->saveXML();
//output: everything looks normal but the new nodes are all on one line.
?>
I found I could pass LIBXML_NOBLANKS to the load method and it would reformat the whole document, including my added stuff:
<?php
$dom = DOMDocument::load('file.xml', LIBXML_NOBLANKS);
$dom->formatOutput = true;
//$dom->add some new elements with child nodes somewhere inside the loaded XML using insertBefore();
$dom->saveXML();
//output: everything looks newly formatted, including new nodes
?>
Hope this helps, took me hours of trial and error to figure this out!The name of the constant LIBXML_NOENT is very misleading. Adding this flag actually causes the parser to load and insert the external entities. Omitting it leaves the tags untouched, which is probably what you want.LIBXML_DOTTED_VERSION option doesn't work.
libxml version: 2.9.4
<?php
echo LIBXML_DOTTED_VERSION;
$xml = new SimpleXMLElement('<fasa_request id="1234567"/>', LIBXML_NOXMLDECL);
?>If you want to save without the XML declaration, and LIBXML_NOXMLDECL doesn't work for you, you can just do this:
<?php
$doc = new \DOMDocument('1.0', 'UTF-8');
$doc->loadXML($xml, LIBXML_*);
echo $doc->saveXML($doc->firstElementChild);
?>
This will output the XML without the XML declaration and without using the flag.
You also don't need to do fiddly replacements and pray that it works.Note: The LIBXML_NOXMLDECL constant is defined in this library but is not supported by DOMDocument (yet).
See also: http://bugs.php.net/bug.php?id=47137
<?php
print "PHP_VERSION: ".PHP_VERSION."\n";
print "LIBXML_VERSION: ".LIBXML_VERSION."\n";
print "LIBXML_NOXMLDECL: ".LIBXML_NOXMLDECL."\n";
$dom = new DomDocument();
$dom->loadXML("<foo />");
# This should work but doesn't.
print "DOMDocument doesn't honor LIBXML_NOXMLDECL:\n";
print $dom->saveXML(null,LIBXML_NOXMLDECL);
# This works, and will still work after the above is fixed.
print "Forwards compatible workaround:\n";
$lines = explode("\n", $dom->saveXML(null, LIBXML_NOXMLDECL), 2);
if(!preg_match('/^\<\?xml/', $lines[0]))
print $lines[0];
print $lines[1];
?>
PHP_VERSION: 5.3.1-0.dotdeb.1
LIBXML_VERSION: 20632
LIBXML_NOXMLDECL: 2
DOMDocument doesn't honor LIBXML_NOXMLDECL:
<?xml version="1.0"?>
<foo/>
Forwards compatible workaround:
<foo/>