XMLWriter::writeAttribute
xmlwriter_write_attribute
(PHP 5 >= 5.1.2, PHP 7, PECL xmlwriter >= 0.1.0)
XMLWriter::writeAttribute — xmlwriter_write_attribute — Write full attribute
说明
面向对象风格
$name
, string $value
) : bool过程化风格
$xmlwriter
, string $name
, string $value
) : boolWrites a full attribute.
参数
-
xmlwriter
-
仅用于过程调用。被修改的 XMLWriter resource。此资源来自于对 xmlwriter_open_uri() 或 xmlwriter_open_memory() 的调用。
-
name
-
The name of the attribute.
-
value
-
The value of the attribute.
返回值
成功时返回 TRUE
, 或者在失败时返回 FALSE
。
参见
- XMLWriter::writeAttributeNs() – Write full namespaced attribute
- XMLWriter::startAttribute() – Create start attribute
- XMLWriter::startAttributeNs() – Create start namespaced attribute
- XMLWriter::endAttribute() – End attribute
用户贡献的笔记
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.
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.