XMLWriter::writeAttribute

xmlwriter_write_attribute

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

XMLWriter::writeAttribute -- xmlwriter_write_attributeEscribe un atributo completo

Descripción

Estilo orientado a objetos

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

Estilo por procedimientos

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

Escribe un atributo completo.

Parámetros

xmlwriter

Sólo para llamadas por procedimientos. El resource XMLWriter que está siendo modificado. Este recurso proviene de una llamada a xmlwriter_open_uri() o xmlwriter_open_memory().

name

El nombre del atributo.

value

El valor del atributo.

Valores devueltos

Devuelve true en caso de éxito o false en caso de error.

Ver también

add a note add a note

User Contributed Notes 2 notes

up
9
Paul
8 years 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.
up
0
Jason Hughes
13 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.
To Top