2017-01-09 3 views
2

여기에서 노드를 AdSources 노드의 하위 노드로 만듭니다. 나는 "Ad"라는 이름으로 여러 개의 노드를 만들 수 있습니다. 그러나 각 요소 ("Ad")에 대한 속성 ("id")을 설정할 수는 없습니다. 두 번째 요소의 ID 값을 설정하려고하면이 요소에 이미 동일한 특성이 있다고 표시됩니다. 즉 id를 설정하려고 할 때마다 첫 번째 요소 만 진행합니다.SimpleXML PHP를 사용하여 xml에 요소 (동일한 이름)에 대한 속성 값을 추가하는 방법

$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

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>