2016-03-31 11 views
-1

Ich habe diese Art von XML-Format:Wie XML Attribut zu demselben Element hinzufügen?

<root> 
    <NotOfferNameList> 
     <OfferName>...</OfferName> 
     <OfferName>...</OfferName> 
     <OfferName>...</OfferName> 
    </NotOfferNameList> 
</root> 

Und ich möchte offerName Wie dynamische Attribut-ID hinzuzufügen:

<OfferNameList> 
      <OfferName id="1">...</OfferName> 
      <OfferName id="2">...</OfferName> 
      <OfferName id="2">...</OfferName> 
     </OfferNameList> 

Ich bin mit PHP SimpleXMLElement und OfferName->addAttribute('id', $i);

mit Aber fügt nur die ID für den ersten Angebotsnamen hinzu und zeigt Folgendes an:

<OfferNameList> 
       <OfferName id="1">...</OfferName> 
       <OfferName>...</OfferName> 
       <OfferName>...</OfferName> 
      </OfferNameList> 

Kann mir jemand helfen, das herauszufinden ...?

+0

bearbeiten Sie Ihre Frage und posten Sie Ihre Code – michi

Antwort

0

eine for() Schleife verwenden Sie das gewünschte Ergebnis erhalten:

$xml = simplexml_load_string($xml); 

$nodes = $xml->NotOfferNameList->OfferName; 
for($i = 0; $i < count($nodes); $i++) 
{ 
    $nodes[$i]->addAttribute('id', $i+1); 
} 

echo $xml->asXML(); 

AUSGABE:

<?xml version="1.0"?> 
<root> 
    <NotOfferNameList> 
     <OfferName id="1">...</OfferName> 
     <OfferName id="2">...</OfferName> 
     <OfferName id="3">...</OfferName> 
    </NotOfferNameList> 
</root> 

eval.in demo

+0

Danke, wirklich Sie sind genial –

0

können Sie verwenden Index auf den zweiten Zugang, drittens, auf so .. Kind-Element des gleichen Namens:

//add attribute to the 2nd OfferName : 
$OfferNameList->OfferName[1]->addAttribute('id', $i); 

//add attribute to the 3rd OfferName : 
$OfferNameList->OfferName[2]->addAttribute('id', $i); 

.... 
Verwandte Themen