php
  • xml
  • simplexml
  • 2017-01-09 21 views 2 likes 
    2

    ここでは、ノードをAdSourcesノードの子として作成しています。私は同じ名前の "Ad"を持ついくつかのノードを作成することができます。しかし、私は各要素( "広告")の属性( "id")を設定することができません。 2番目の要素の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> 
    
    関連する問題