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>
DOMDocument::createAttribute
(PHP 5)
DOMDocument::createAttribute — Crear nuevo attribute
Descripción
Esta función crea una nueva instancia de la clase DOMAttr. Este nodo no se mostrará en el documento a no ser que sea insertado con (p.e.j.) DOMNode::appendChild().
Parámetros
-
name -
El nombre del atributo.
Valores devueltos
El nuevo DOMAttr o FALSE si ha ocurrido un error.
Errores/Excepciones
-
DOM_INVALID_CHARACTER_ERR -
Lanzado si
namecontiene un carácter inválido.
Ver también
- DOMNode::appendChild() - Añade un nuevo hijo al final de los hijos
- DOMDocument::createAttributeNS() - Crea un nuevo nodo atributo con un namespace asociado.
- DOMDocument::createCDATASection() - Crea un nuevo nodo cdata
- DOMDocument::createComment() - Crea un nuevo nodo de comentario
- DOMDocument::createDocumentFragment() - Crea un nuevo fragmento de documento
- DOMDocument::createElement() - Crea un nuevo nodo elemento
- DOMDocument::createElementNS() - Crea un nuevo nodo elemento con el nombre de espacio asociado
- DOMDocument::createEntityReference() - Create new entity reference node
- DOMDocument::createProcessingInstruction() - Crea un nuevo nodo PI
- DOMDocument::createTextNode() - Crea un nuevo nodo de texto
Beerkeeper ¶
1 year ago
Skateside ¶
1 month ago
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.
