Constantes pré-definidas

As contantes abaixo são definidas por esta extensão e somente estarão disponíveis quando a extensão foi compilada com o PHP ou carregada dinamicamente durante a execução.

LIBXML_COMPACT (integer)
Ativa a otimização de alocação de pequenos nodes. Isto pode tornar rápida sua aplicação sem necessitar modificar o código.

Nota:

Somente disponível na Libxml >= 2.6.21

LIBXML_DTDATTR (integer)
Padrão de atributos DTD
LIBXML_DTDLOAD (integer)
Carrega o subset externo
LIBXML_DTDVALID (integer)
Valida com o DTD
LIBXML_NOBLANKS (integer)
Remove nodes em branco
LIBXML_NOCDATA (integer)
Fundi CDATA com text nodes
LIBXML_NOEMPTYTAG (integer)
Expande tags vazias (e.g. <br/> para <br></br>)

Nota:

Esta opção está somente disponível atualmente nas funções DOMDocument::save e DOMDocument::saveXML.

LIBXML_NOENT (integer)
Substitue entidades
LIBXML_NOERROR (integer)
Suprime mensagens de erro
LIBXML_NONET (integer)
Desabilita o acesso a rede quando carregando documentos
LIBXML_NOWARNING (integer)
Suprime avisos
LIBXML_NOXMLDECL (integer)
Retira a declaração do XML quando salva o documento

Nota:

Somente disponível na Libxml >= 2.6.21

LIBXML_NSCLEAN (integer)
Remove declarações redundantes de namespaces
LIBXML_XINCLUDE (integer)
Implementa substituições XInclude
LIBXML_ERR_ERROR (integer)
A recoverable error
LIBXML_ERR_FATAL (integer)
Um erro fatal
LIBXML_ERR_NONE (integer)
Sem erros
LIBXML_ERR_WARNING (integer)
Um simples aviso
LIBXML_VERSION (integer)
Versão da libxml como 20605 ou 20617
LIBXML_DOTTED_VERSION (string)
Versão da libxml como 2.6.5 ou 2.6.17
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