XMLWriter::writeAttribute

xmlwriter_write_attribute

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

XMLWriter::writeAttribute -- xmlwriter_write_attributeWrite full attribute

Descrição

Estilo orientado à objeto

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

Estilo procedural

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

Writes a full attribute.

Parâmetros

xmlwriter

Apenas para chamadas de procedimentos. O recurso XMLWriter resource que esta sendo modificado. Este recurso vem de uma chamada a xmlwriter_open_uri() ou xmlwriter_open_memory().

name

The name of the attribute.

value

The value of the attribute.

Valor Retornado

Retorna TRUE em caso de sucesso ou FALSE em caso de falha.

Exemplos

Exemplo #1 Intermixing Sub-elements and Attributes

If writing sub-elements and attributes is intermixed, 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();
?>

O exemplo acima irá imprimir:

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

Veja Também

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