如何使用 SimpleXML PHP 以编程方式在 xml 中添加元素(具有相同名称)的属性值



在这里,我正在创建节点作为AdSources节点的子节点。我可以创建多个同名"Ad"的节点。但是我无法为每个元素("广告")设置属性("id")。如果我尝试为第二个元素设置 ID 值,它说该元素已经具有相同的属性。即每次我尝试为它设置 id 时,都会单独转到第一个元素。

$xmlFile    = 'mediationrequest2.xml';
$xml        = new SimpleXMLExtended('<Mediation  version="1.0"/>');
$adsources = $xml->addChild('AdSources');
$xml->AdSources[0]->addChild('Ad');
$xml->AdSources[0]->Ad->addAttribute('id', '1001');
$adsources->Ad[0]->addChild('Value', '5');
$adsources->Ad[0]->addChild('VASTAdTagURI');
$xml->AdSources[0]->Ad[0]->VASTAdTagURI->addCData('http://rtr.innovid.com/r1.515f10ae711057.99306980;cb=$rand');
$xml->AdSources[1]->addChild('Ad');
$xml->AdSources[0]->Ad->addAttribute('id', '1002');
$adsources->Ad[0]->addChild('Value', '5');
$adsources->Ad[0]->addChild('VASTAdTagURI');
$xml->AdSources[0]->Ad[0]->VASTAdTagURI->addCData('http://rtr.innovid.com/r1.515f10ae711057.99306980;cb=$rand');

SimpleXMLElement::addChild()返回新的元素对象。使用该变量。

$xml = new SimpleXMLElement('<Mediation  version="1.0"/>');
$adsources = $xml->addChild('AdSources');
$Ad = $adsources->addChild('Ad');
$Ad->addAttribute('id', '1001');
$Ad = $adsources->addChild('Ad');
$Ad->addAttribute('id', '1002');
echo $xml->asXml();

输出:

<?xml version="1.0"?>
<Mediation version="1.0">
  <AdSources><Ad id="1001"/><Ad id="1002"/></AdSources>
</Mediation>

最新更新