如何为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>
答案 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);