使用DOM为一个Element创建多个属性

时间:2014-06-16 19:31:41

标签: php xml dom

如何为DOM元素创建多个属性?

这里我有一个属性

$data = $xml->createElement('enclosure', $rssdata["nNr"]);
$enclosure = $xml->createAttribute('type');
$enclosure->value = 'image/jpeg';
$data->appendChild($enclosure);
$item->appendChild($data);

但是我需要两个属性,比如这里为URL

导出
<enclosure type="image/jpeg" url="">1</enclosure>

3 个答案:

答案 0 :(得分:3)

使用PHP的DOM扩展,您可以使用DOMElement::setAttribute方法更轻松地将一个或多个属性添加到 DOMElement

$enclosure是您问题中DOMElement元素的<enclosure>

$enclosure->setAttribute("type", "image/jpeg");
$enclosure->setAttribute("url", "");

只需添加您要求的两个属性即可。你可以这样做一个,两个或N个属性。

  

背景信息:在XML中,元素只能有一个具有相同名称的属性。

答案 1 :(得分:1)

只需按照添加第一个的方式添加另一个。

$urlAttr = $xml->createAttribute('url');
...

答案 2 :(得分:1)

再添加三行:

$data = $xml->createElement('enclosure', $rssdata["nNr"]);

$enclosure = $xml->createAttribute('type'); # creating attribute 1
$enclosure->value = 'image/jpeg';           # setting value
$data->appendChild($enclosure);             # adding attribute to element

$url = $xml->createAttribute('url');  # creating attribute 2
$url->value = '';                     # setting value
$data->appendChild($url);             # adding attribute to element

$item->appendChild($data);

如果要添加许多属性,可以考虑创建一个函数来减少代码重复。

您的变量名称可能会令人困惑。如果您重命名$enclosure$data,您的代码可能会变得更加清晰易读:

$enclosureElement = $xml->createElement('enclosure', $rssdata["nNr"]);

$typeAttribute = $xml->createAttribute('type'); # creating attribute 1
$typeAttribute->value = 'image/jpeg';           # setting value
$enclosureElement->appendChild($typeAttribute); # adding attribute to element

$urlAttribute = $xml->createAttribute('url');  # creating attribute 2
$urlAttribute->value = '';                     # setting value
$enclosureElement->appendChild($urlAttribute); # adding attribute to element

$item->appendChild($enclosureElement);