2017-01-09 2 views
2

Ici, je crée des nœuds en tant qu'enfants sur le nœud AdSources. Je peux créer plusieurs noeuds avec le même nom "Ad". Mais je ne suis pas en mesure de définir l'attribut ("id") pour chaque élément ("Ad"). Si j'essaie de définir une valeur d'ID pour le second élément, cela indique que cet élément a déjà le même attribut. c'est-à-dire chaque fois que j'essaie de définir un identifiant car il passe au premier élément seul.Comment ajouter la valeur d'attribut pour les éléments (avec le même nom) en XML en utilisant PHP SimpleXML par programmation

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

Répondre

1

SimpleXMLElement::addChild() renvoie le nouvel objet élément. Utilisez la variable.

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

sortie:

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