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_attributeWrite full attribute

Descrierea

Stil obiect-orientat

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

Stil procedural

xmlwriter_write_attribute ( XMLWriter $writer , string $name , string $value ) : bool

Writes a full attribute.

Parametri

xmlwriter

Numai pentru apelurile procedurale. Resursa XMLWriter care este modificată. Această resursă se obține în urma apelării xmlwriter_open_uri() sau xmlwriter_open_memory ().

name

The name of the attribute.

value

The value of the attribute.

Valorile întoarse

Întoarce valoarea true în cazul succesului sau false în cazul eșecului.

Istoricul schimbărilor

Versiune Descriere
8.0.0 writer expects an XMLWriter instance now; previously, a resource was expected.

Exemple

Example #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();
?>

Exemplul de mai sus va afișa:

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

A se vedea și

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