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

时间:2017-01-09 13:15:59

标签: php xml simplexml

我在这里创建节点作为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');

1 个答案:

答案 0 :(得分:1)

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>