DOMDocument::createAttribute()
(PHP 5, PHP 7)
Create new attribute
说明
public DOMDocument::createAttribute(string $name): DOMAttr
This function creates a new instance of class DOMAttr.此节点出现在文档中,除非是用诸如DOMNode->appendChild()等函数来将其插入。
参数
- $name
The name of the attribute.
返回值
The new DOMAttr or FALSE
if an error occurred.
错误/异常
DOM_INVALID_CHARACTER_ERR
Raised if$namecontains an invalid character.
参见
- DOMNode::appendChild() Adds new child at the end of the children
- DOMDocument::createAttributeNS() Create new attribute node with an associated namespace
- DOMDocument::createCDATASection() Create new cdata node
- DOMDocument::createComment() Create new comment node
- DOMDocument::createDocumentFragment() Create new document fragment
- DOMDocument::createElement() Create new element node
- DOMDocument::createElementNS() Create new element node with an associated namespace
- DOMDocument::createEntityReference() Create new entity reference node
- DOMDocument::createProcessingInstruction() Creates new PI node
- DOMDocument::createTextNode() Create new text node
Just in case it isn't clear (like I had), an example: <?php $domDocument = new DOMDocument('1.0', "UTF-8"); $domElement = $domDocument->createElement('field','some random data'); $domAttribute = $domDocument->createAttribute('name'); // Value for the created attribute $domAttribute->value = 'attributevalue'; // Don't forget to append it to the element $domElement->appendChild($domAttribute); // Append it to the document itself $domDocument->appendChild($domElement); ?> Will output: <?xml version="1.0" encoding="UTF-8"?> <field name="attributevalue">some random data</field>
This may be obvious to most people, but it gave me a few minutes of head-scratching before I figured it out, but ampersands need to be properly escaped as HTML entities. <?php $doc= new DOMDocument('1.0', "UTF-8"); $invalid_elem = $doc->createElement('field', 'incorrect attribute'); $invalid_attr = $doc->createAttribute('name'); $invalid_attr->value = 'foo&bar'; $invalid_elem->appendChild($invalid_attr); $doc->appendChild($invalid_elem); $valid_elem = $doc->createElement('field', 'correct attribute'); $valid_attr = $doc->createAttribute('name'); $valid_attr->value = 'foo&bar'; $valid_elem->appendChild($valid_attr); $doc->appendChild($valid_elem); ?> Will output: <?xml version="1.0" encoding="UTF-8"?> <field name="foo">incorrect attribute</field> <field name="foo&bar">correct attribute</field> As near as I can figure out, no exception is thrown for an invalid attribute. This will affect DOMDocuments created as HTML as well as XML.