0

カンマ区切りの値を(展開を使用して)配列に分割する方法では適切に機能しますが、子ノードを追加すると、ルート終了タグの後に表示されます。私がここでやろうとしているのは<Genres>Adventure,Crime,Action</Genres>

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

}

助けてくれてありがとう、私はこれに何日も取り組んできました笑;)

4

1 に答える 1

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);   
}
于 2010-10-14T23:59:12.107 に答える