私はXMLファイルを持っており、PHPスクリプトを使用して2つのノード間に新しいノードを挿入しようとしています。XMLは別のPHPの前にノードを作成します
XMLファイル:
<playlistLog>
<hour>
<track>
<type>take</type>
<url>URL</url>
<title>1473869236.wav</title>
<mix>0</mix>
</track>
(...)
</hour>
</playlistLog>
PHPファイル:
$xmldoc = new DOMDocument();
$xmldoc->load('../logs/log14-09-2016.xml');
$elem = $xmldoc->getElementsByTagName("track");
$track = $xmldoc->createElement('track');
$type = $xmldoc->createElement('type', 'take');
$track->appendChild($type);
$url = $xmldoc->createElement('url', 'url');
$track->appendChild($url);
$title = $xmldoc->createElement('title', 'title');
$track->appendChild($title);
$mix = $xmldoc->createElement('mix', 'mix');
$track->appendChild($mix);
$xmldoc->documentElement->insertBefore($track,$elem[660]);
$xmldoc->save('../logs/log14-09-2016.xml');
私は "トラック" のタグ番号660の前に新しいノードを挿入しようとしているが、私はPHPファイルにそれを開こうとするとまったく動作しません。
誰かが私が間違っていることを教えてもらえますか?
SOLUTION:私は彼がwrotes何ビット、最後にコードが右やっているを変更
@ThW応答の後:
$document = new DOMDocument();
$document->preserveWhiteSpace = FALSE;
$document->load('../logs/log14-09-2016.xml');
$xpath = new DOMXpath($document);
$previousTrack = $xpath->evaluate('/playlistLog/hour/track')->item(659);
$newTrack = $previousTrack->parentNode->insertBefore($document->createElement('track'),$previousTrack);
$newTrack
->appendChild($document->createElement('type'))
->appendChild($document->createTextNode('take'));
$document->formatOutput = TRUE;
echo $document->save('../logs/log14-09-2016.xml');
どうしますか?エラーが表示された場合は、質問に追加してください。スクリプトが実行されても、結果が期待どおりでない場合は、結果が何であり、何を期待しているかを表示します。 – lucash
@lucash PHPページが読み込まれません。それで何もしません。 – user3746625