【问题标题】:Create multiple attribute for one Element with DOM [duplicate]使用 DOM 为一个元素创建多个属性 [重复]
【发布时间】:2014-06-16 19:31:40
【问题描述】:

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

这里我有一个属性

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

但我需要两个属性,例如 URL 的 export here

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

【问题讨论】:

    标签: php xml dom


    【解决方案1】:

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

    $enclosure 是您问题中&lt;enclosure&gt; 元素的DOMElement

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

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

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

    【讨论】:

    • 最后一个正确的有用答案:P
    【解决方案2】:

    只需再添加三行:

    $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);
    

    【讨论】:

    • 使用-&gt;createAttribute(),您也可以设置value - 只需将其添加为第二个参数。更简单:使用setAttribute()。无需创建。
    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-12
      • 2017-10-04
      • 1970-01-01
      相关资源
      最近更新 更多