我有一个XML文件,我试图用PHP脚本在两个其他人之间插入一个新节点。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:
@ThW响应后,我改变了一下他wrotes什么,最后的代码是做正确的:
$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