PHP Unconference Europe 2015

Constantes predefinidas

Estas constantes están definidas por esta extensión y estarán disponibles sólo cuando la extensión haya sido compilada con PHP, o bien sea cargada dinámicamente en ejecución.

LIBXML_COMPACT (integer)
Activa la optimización de asignación de nodos pequeños. Esto puede acelerar la aplicación sin la necesidad de cambiar el código.

Nota:

Solo disponible en Libxml >= 2.6.21

LIBXML_DTDATTR (integer)
Atributos DTD por defecto
LIBXML_DTDLOAD (integer)
Carga el subconjunto externo
LIBXML_DTDVALID (integer)
Valida con el DTD
LIBXML_HTML_NOIMPLIED (integer)
Establece el indicador HTML_PARSE_NOIMPLIED flag, el cual desactiva la adición automática de elementos html/body... implicados.

Nota:

Solamente disponible en Libxml >= 2.7.7 (a partir de PHP >= 5.4.0)

LIBXML_HTML_NODEFDTD (integer)
Establece el indicador HTML_PARSE_NODEFDTD, el cual previente que se añada un tipo de documento predeterminado cuando no se encuentra uno.

Nota:

Solamente disponible en Libxml >= 2.7.8 (a partir de PHP >= 5.4.0)

LIBXML_NOBLANKS (integer)
Elimina nodos en blanco
LIBXML_NOCDATA (integer)
Combina CDATA como nodos de texto
LIBXML_NOEMPTYTAG (integer)
Expande etiquetas vacías (por ej. de <br/> a <br></br>)

Nota:

Esta opción está actualmente disponible solo en las funciones DOMDocument::save y DOMDocument::saveXML.

LIBXML_NOENT (integer)
Sustituye entidades
LIBXML_NOERROR (integer)
Suprime reportes de errores
LIBXML_NONET (integer)
Deshabilita el acceso a red cuando se cargan documentos
LIBXML_NOWARNING (integer)
Suprime reportes de advertencias
LIBXML_NOXMLDECL (integer)
Omite la declaración XML cuando se guarda un documento

Nota:

Solo disponible en Libxml >= 2.6.21

LIBXML_NSCLEAN (integer)
Eliminar declaraciones de nombre de espacios redundantes
LIBXML_PARSEHUGE (integer)
Establece la bandera XML_PARSE_HUGE, que hace más flexible cualquier límite hardcode del analizador. Esto afecta a los límites tales como la profundidad máxima de un documento o la recursión de entidades, así como los límites de tamaño de los nodos de texto.

Nota:

Solamente está disponible en Libxml >= 2.7.0 (a partir de PHP >= 5.3.2 y PHP >= 5.2.12)

LIBXML_PEDANTIC (integer)
Establece el indicador XML_PARSE_PEDANTIC, el cual habilita el informe de errores pedante.

Nota:

Disponible a partir de PHP >= 5.4.0

LIBXML_XINCLUDE (integer)
Implementa la sustitución XInclude
LIBXML_ERR_ERROR (integer)
Un error recuperable
LIBXML_ERR_FATAL (integer)
Un error fatal
LIBXML_ERR_NONE (integer)
Sin errores
LIBXML_ERR_WARNING (integer)
Una simple advertencia
LIBXML_VERSION (integer)
La versión de libxml, como 20605 o 20617
LIBXML_DOTTED_VERSION (string)
La versión de libxml, como 2.6.5 o 2.6.17
LIBXML_SCHEMA_CREATE (integer)
Crear nodos de valor predeterminado/fijo durante la validación del esquema XSD

Nota:

Solamente disponible en Libxml >= 2.6.14 (a partir de PHP >= 5.5.2)

add a note add a note

User Contributed Notes 2 notes

up
2
@oneseventeen
3 years ago
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!
up
-1
zachatwork at gmail dot com
4 years ago
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/>
To Top