PHP 7.1.0 Released

XMLWriter->writeAttribute

xmlwriter_write_attribute

(PHP 5 >= 5.1.2, PHP 7, PECL xmlwriter >= 0.1.0)

XMLWriter->writeAttribute -- xmlwriter_write_attributeKomplettes Attribut schreiben

Beschreibung

Objektorientierter Stil

bool XMLWriter::writeAttribute ( string $name , string $value )

Prozeduraler Stil

bool xmlwriter_write_attribute ( resource $xmlwriter , string $name , string $value )

Schreibt ein vollständiges Attribut.

Parameter-Liste

xmlwriter

Nur für prozedurale Aufrufe. Die XMLWriter-resource, die bearbeitet werden soll. Diese Ressource wird von Aufrufen von xmlwriter_open_uri() oder xmlwriter_open_memory() geliefert.

name

Name des Attributs.

value

Wert des Attributs.

Rückgabewerte

Gibt bei Erfolg TRUE zurück. Im Fehlerfall wird FALSE zurückgegeben.

Siehe auch

add a note add a note

User Contributed Notes 2 notes

up
6
Jason Hughes
5 years ago
If you intermix writing sub-elements and attributes, any attributes that are written after the first sub-element are ignored/discarded:

<?php
$xml
->startElement('element');
 
$xml->writeAttribute('attr1', 0);
 
$xml->writeElement('subelem', 0);
 
$xml->writeAttribute('attr2', 0);
$xml->endElement();
?>

Outputs:

<element attr1=0>
  <subelem>0</subelem>
</element>

This is stupid, but the way it works as of PHP 5.2.4.
up
0
Paul
2 months ago
If you intermix writing sub-elements and attributes, any attempt to write attributes after the first sub-element will fail and return false:

<?php
$xml
= new XMLWriter();
$xml->openMemory();

$xml->startElement('element');
$xml->writeAttribute('attr1', '0');
$xml->writeElement('subelem', '0');
var_dump($xml->writeAttribute('attr2', '0'));
$xml->endElement();

echo
$xml->flush();
?>

Outputs:

bool(false)
<element attr1="0"><subelem>0</subelem></element>

This is because this is a forward-only writer and the start tags are already finished. There is no going back to add more attributes later, there is no place to put attr2. This is exactly how it is supposed to work.
To Top