PHP 8.4.2 Released!

Öntanımlı Sabitler

Buradaki sabitler bu eklenti için tanımlanmış olup, sadece eklentinin PHP içinde derlenmiş olması veya çalışma anında dinamik olarak yüklenmesi halinde kullanılabilir.

LIBXML_BIGLINES (int)
65535'ten büyük satır numaralarının doğru şekilde raporlanmasına izin verir.

Bilginize:

Sadece PHP 7.0.0 ve sonrası ile Libxml >= 2.9.0 için kullanılabilir.

LIBXML_COMPACT (int)
Küçük düğüm ayırma en iyilemesini etkinleştirir. Kodda değişiklik yapmaksızın uygulamanızın hızlanmasını sağlar.

Bilginize:

Sadece Libxml >= 2.6.21 sürümlerinde kullanılabilmektedir.

LIBXML_DTDATTR (int)
Öntanımlı DTD öznitelikleri.
LIBXML_DTDLOAD (int)
Harici alt kümeyi yükler.
LIBXML_DTDVALID (int)
DTD ile doğrulama yapar.
Dikkat

DTD doğrulamasının etkinleştirilmesi, XML Harici Varlık (XXE) saldırılarını kolaylaştırabilir.

LIBXML_HTML_NOIMPLIED (int)
Örtülü html/body... öğelerinin otomatik olarak eklenmesini kapatan HTML_PARSE_NOIMPLIED seçeneğini ayarlar.

Bilginize:

Sadece Libxml >= 2.7.7 ile PHP 5.4.0 ve sonrasında kullanılabilir.

LIBXML_HTML_NODEFDTD (int)
Bulunmadığında doctype eklenmesini engelleyen HTML_PARSE_NODEFDTD seçeneğini ayarlar.

Bilginize:

Sadece Libxml >= 2.7.8 ile PHP 5.4.0 ve sonrasında kullanılabilir.

LIBXML_LOADED_VERSION (string)
libxml'in ayrıştırıcı modülünün sürümü.
LIBXML_NOBLANKS (int)
Boş düğümleri siler.
LIBXML_NOCDATA (int)
CDATA bölümleri metin düğümü olarak ele alınır.
LIBXML_NOEMPTYTAG (int)
Boş etiketleri genişletir (örneğin, <br/> etiketi <br></br> haline getirilir).

Bilginize:

Bu seçenek şimdilik sadece DOMDocument::save ve DOMDocument::saveXML yönteminde kullanılabilmektedir.

LIBXML_NOENT (int)
Öğe ikameleri yapılır.
Dikkat

Öğe ikamesinin etkinleştirilmesi, XML Harici Öğe (XXE) saldırılarını kolaylaştırabilir.

LIBXML_NOERROR (int)
Hata raporlama kapatılır.
LIBXML_NONET (int)
Belgeler yüklenirken ağ erişimi iptal edilir.
LIBXML_NOWARNING (int)
Uyarı raporlama kapatılır.
LIBXML_NOXMLDECL (int)
Bir belgeyi kaydederken XML bildirimi atlanır.

Bilginize:

Sadece Libxml >= 2.6.21 sürümlerinde kullanılabilmektedir.

LIBXML_NSCLEAN (int)
Gereksiz isim alanı bildirimleri silinir.
LIBXML_PARSEHUGE (int)
Ayrıştırıcıdaki herhangi bir sabit kodlanmış sınırı gevşeten XML_PARSE_HUGE bayrağını ayarlar. Bu, bir belgenin azami derinliği veya öğe özyinelemesi gibi sınırları ve ayrıca metin düğümlerinin boyut sınırlarını etkiler.

Bilginize:

Sadece Libxml >= 2.7.0 (PHP >= 5.3.2 ve PHP >= 5.2.12) ile kullanılabilir.

LIBXML_PEDANTIC (int)
Bilgiçlik hatası raporlamayı etkinleştiren XML_PARSE_PEDANTIC bayrağını ayarlar.

Bilginize:

PHP >= 5.4.0 ile kullanılabilir.

LIBXML_XINCLUDE (int)
XInclude ikamesi gerçeklenir.
LIBXML_ERR_ERROR (int)
Kurtarılabilir hata.
LIBXML_ERR_FATAL (int)
Ölümcül hata.
LIBXML_ERR_NONE (int)
Hata yok.
LIBXML_ERR_WARNING (int)
Basit uyarı.
LIBXML_VERSION (int)
20605 veya 20617 biçiminde libxml sürümü.
LIBXML_DOTTED_VERSION (string)
2.6.5 veya 2.6.17 biçiminde libxml sürümü.
LIBXML_SCHEMA_CREATE (int)
XSD şema doğrulaması sırasında öntanımlı/sabit değer düğümleri oluşturur.

Bilginize:

Sadece Libxml >= 2.6.14 (PHP >= 5.5.2) ile kullanılabilir.

add a note

User Contributed Notes 5 notes

up
10
@oneseventeen
13 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
2
siraic at gmail dot com
3 years ago
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.
up
2
vetalstar at mail dot ru
7 years ago
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);

?>
up
0
Ismael Miguel
1 year ago
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.
up
0
zachatwork at gmail dot com
14 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