2010-09-10 21 views
0

之后)它正常工作的方式是它打破了逗号分隔符分隔值到一个数组(与爆炸),但是当它增加了子节点,他们收根标签后显示出来。我想在这里做的是<Genres>Adventure,Crime,Action</Genres>如何更改此功能以将子节点添加到//根目录/产品/流派节点中,而不是添加到文件末尾(即在</root>

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

简化XML替换来源:

<?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> 

我的功能:

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

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

} 

感谢您的帮助,我一直工作在这几天,现在笑)

回答

0

答案是增加一个功能“insertNewChild”正是如此使用它:

//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); 
} 

和insertNewChild函数:

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