略微加速

PHP官方手册 - 互联网笔记

PHP - Manual: XMLWriter::writeAttribute

2024-05-16

XMLWriter::writeAttribute

xmlwriter_write_attribute

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

XMLWriter::writeAttribute -- xmlwriter_write_attributeWrite full attribute

说明

面向对象风格

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

过程化风格

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

Writes 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

参见

add a note add a note

User Contributed Notes 2 notes

up
9
Paul
2 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
8 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.

官方地址:https://www.php.net/manual/en/function.xmlwriter-write-attribute.php

北京半月雨文化科技有限公司.版权所有 京ICP备12026184号-3