Войти

Показать полную графическую версию : [решено] Создание атрибута на PHP (DOM)


dmit.medv
25-07-2012, 10:55
Здравствуйте!
Подскажите пожалуйста, можно ли создать атрибут элемента одной строкой.
Сейчас я создаю так:

$xml=new DomDocument('1.0','utf-8'); // Создание XML-документа

$TK = $xml->appendChild($xml->createElement('TK')); // Создание корня

// добавление атрибута элементу
$tk_attr1 = $xml->createAttribute('name'); // строка 1
$tk_attr1->value = 'Мега'; // строка 2
$TK->appendChild($tk_attr1); // строка 3

можно ли как нибудь добавить атрибут одной строкой?
приблизительно так: $TK->appendChild("тут создание атрибута"); // в итоге - одна строка

Предложите свои способы. Спасибо.

Habetdin
25-07-2012, 12:04
Можно создать функцию, которая будет делать то же, что и те 3 строки (в примере - appendAttribute):
<?php
$xml=new DomDocument('1.0','utf-8'); // Создание XML-документа

$TK = $xml->appendChild($xml->createElement('TK')); // Создание корня

function appendAttribute($doc, $element, $attrName, $attrVal)
{
$attr = $doc->createAttribute($attrName);
$attr->value = $attrVal;
$element->appendChild($attr);
}

appendAttribute($xml, $TK, 'name1', 'Мега');
appendAttribute($xml, $TK, 'name2', 'Гига');

echo $xml->saveXML();

<?xml version="1.0" encoding="utf-8"?>
<TK name1="Мега" name2="Гига"/>

dmit.medv
25-07-2012, 12:47
Огромное спасибо! а еще программистом называюсь, не мог додуматься до такого простого решения )

dmit.medv
26-07-2012, 11:13
Способ без создания доп.функции:

$TK->appendChild($xml->createAttribute('name'))->appendChild($xml->createTextNode('Мега-Гига'));




© OSzone.net 2001-2012