2010-09-10 46 views
0

Cela fonctionne correctement dans la façon dont il rompt la valeurs séparées dans un tableau (avec explosion), mais quand il ajoute les nœuds enfants, ils apparaissent après la balise racine de fermeture. ce que je suis en train de faire ici est de remplacer le <Genres>Adventure,Crime,Action</Genres> avecComment modifier cette fonction pour ajouter les nœuds enfants dans le nœud // root/Product/Genres au lieu d'ajouter à la fin du fichier (par exemple, après</root>

<Genre>Adventure</Genre> 
<Genre>Crime</Genre> 
<Genre>Action</Genre> 

une XML simplifiée source:

<?xml version="1.0" encoding="UTF-8"?> 
<root><Product><Genres>Adventure,Crime,Action</Genres></Product></root> 

<Genre>Adventure</Genre> 
<Genre>Crime</Genre> 
<Genre>Action</Genre> 

Ma fonction:

global $genreArray; 
$genres = explode(",",$genreArray->nodeValue); 

foreach ($genres as $genre) { 
$node = $XmlDoc->createElement('Genre', $genre); 
$XmlDoc->appendChild($node); 
} 

} 

Merci pour toute aide, je travaille sur ce depuis plusieurs jours lol;)

Répondre

0

La réponse était d'ajouter une fonction « insertNewChild » et l'utiliser ainsi:

//Convert Genres CSV into individual Genre nodes 

global $genreArray; 
if (substr_count($genreArray->nodeValue, ',') > 0) 
    { 
    $genres = explode(",",htmlspecialchars($genreArray->nodeValue)); 
    $genreArray->nodeValue = ""; 
    $allgenres = $XmlDoc->getElementsByTagName('Genres'); 
    $parent = $allgenres->item(0); 
     foreach ($genres as $genre) 
     { 
     $newnode = $XmlDoc->createElement('Genre', $genre); 
     insertNewChild($parent,$newnode); 
     } 
    } 
else 
{ 
$genre = htmlspecialchars($genreArray->nodeValue); 
$genreArray->nodeValue = ""; 
$allgenres = $XmlDoc->getElementsByTagName('Genres'); 
$parent = $allgenres->item(0); 
$newnode = $XmlDoc->createElement('Genre', $genre); 
insertNewChild($parent,$newnode); 
} 

et la fonction insertNewChild:

function insertNewChild($currentNode, $node) 
{ 
    $currentNode->insertBefore($node, $currentNode->firstChild); 
}