©
This document uses PHP Chinese website manual Release
下列常量由此扩展定义,且仅在此扩展编译入 PHP 或在运行时动态载入时可用。
LIBXML_BIGLINES
( integer )
Note:
Only available as of PHP 7.0.0 with Libxml >= 2.9.0
LIBXML_COMPACT
( integer )
Note:
Only available in Libxml >= 2.6.21
LIBXML_DTDATTR
( integer )
LIBXML_DTDLOAD
( integer )
LIBXML_DTDVALID
( integer )
LIBXML_HTML_NOIMPLIED
( integer )
Note:
Only available in Libxml >= 2.7.7 (as of PHP >= 5.4.0)
LIBXML_HTML_NODEFDTD
( integer )
Note:
Only available in Libxml >= 2.7.8 (as of PHP >= 5.4.0)
LIBXML_NOBLANKS
( integer )
LIBXML_NOCDATA
( integer )
LIBXML_NOEMPTYTAG
( integer )
Note:
This option is currently just available in the DOMDocument::save and DOMDocument::saveXML functions.
LIBXML_NOENT
( integer )
LIBXML_NOERROR
( integer )
LIBXML_NONET
( integer )
LIBXML_NOWARNING
( integer )
LIBXML_NOXMLDECL
( integer )
Note:
Only available in Libxml >= 2.6.21
LIBXML_NSCLEAN
( integer )
LIBXML_PARSEHUGE
( integer )
Note:
Only available in Libxml >= 2.7.0 (as of PHP >= 5.3.2 and PHP >= 5.2.12)
LIBXML_PEDANTIC
( integer )
Note:
Available as of PHP >= 5.4.0
LIBXML_XINCLUDE
( integer )
LIBXML_ERR_ERROR
( integer )
LIBXML_ERR_FATAL
( integer )
LIBXML_ERR_NONE
( integer )
LIBXML_ERR_WARNING
( integer )
LIBXML_VERSION
( integer )
LIBXML_DOTTED_VERSION
( string )
LIBXML_SCHEMA_CREATE
( integer )
Note:
Only available in Libxml >= 2.6.14 (as of PHP >= 5.5.2)
[#1] RiKdnua at mail dot ru [2015-09-29 15:31:24]
Tested in PHP 5.2.9-2 (libxml Version 2.7.3) and PHP 5.2.17 (libxml Version 2.8.0)
In SimpleXMLElement LIBXML_NOXMLDECL does not work. XML declaration will be written to a file doc.xml
<?php
ini_set("display_errors","on"); error_reporting(-1);
$xml="<?xml version='1.0'?>
<root><child>text</child></root>";
$xml=new simpleXMLelement($xml, LIBXML_NOXMLDECL);
$xml->asXML('doc.xml');
?>
[#2] @oneseventeen [2011-02-05 23:51:20]
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!
[#3] zachatwork at gmail dot com [2010-02-09 23:30:58]
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:
<?phpxml version="1.0"?>
<foo/>
Forwards compatible workaround:
<foo/>