PHP Velho Oeste 2024

XMLWriter::writeAttribute

xmlwriter_write_attribute

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

XMLWriter::writeAttribute -- xmlwriter_write_attributeЗаписать полный атрибут

Описание

Объектно-ориентированный стиль

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

Процедурный стиль

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

Записывает полный атрибут.

Список параметров

xmlwriter

Только для процедурных вызовов. Изменяемый resource XMLWriter. Этот ресурс может быть получен из xmlwriter_open_uri() или xmlwriter_open_memory().

name

Имя атрибута.

value

Значение атрибута.

Возвращаемые значения

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

Примеры

Пример #1 Перемешивание подэлементов и атрибутов

Если запись подэлементов и атрибутов смешана, любая попытка записи атрибутов после первого подэлемента завершится ошибкой и вернет 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();
?>

Результат выполнения данного примера:

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

Смотрите также

add a note add a note

User Contributed Notes 2 notes

up
9
Paul
7 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