Я пытался вставить новые данные в существующий файл XML, но он не работает. Вот мой XML-файл:
<list>
<activity>swimming</activity>
<activity>running</activity>
<list>
Теперь моя идея заключалась в создании двух файлов: индексной страницы, где она отображает содержимое файла и предоставляет поле для вставки новых элементов, и страницы php, которая будет вставлять данные в файл XML. Вот код для index.php:
<html>
<head><title>test</title></head>
</head>
<?php
$xmldoc = new DOMDocument();
$xmldoc->load('sample.xml', LIBXML_NOBLANKS);
$activities = = $xmldoc->firstChild->firstChild;
if($activities!=null){
while(activities!=null){
echo $activities->textContent.'<br/>';
activities = activities->nextSibling.
}
}
?>
<form name='input' action='insert.php' method='post'>
insert activity:
<input type='text' name='activity'/>
<input type='submit' value='send'/>
</form>
</body>
</html
и вот код для insert.php:
<?php
header('Location:index.php');
$xmldoc = new DOMDocument();
$xmldoc->load('sample.xml');
$newAct = $_POST['activity'];
$root = $xmldoc->firstChild;
$newElement = $xmldoc->createElement('activity');
$root->appendChild($newElement);
$newText = $xmldoc->createTextNode($newAct);
$newElement->appendChild($newText);
$xmldoc->save('sample.xml');
?>
Пользователь должен получить доступ к index.php, где он увидит список текущих действий, присутствующих в файле XML, и текстовое поле ниже, где он может вставить новые действия. После нажатия кнопки отправки на странице будет вызван insert.php, который содержит код, открывающий файл XML в дереве DOM, вставляет новый узел под корневым узлом и вызывает страницу index.php, где пользователь должен в состоянии увидеть список видов деятельности, его новые действия там под другими. Это не работает. Когда я нажимаю на кнопку, чтобы отправить новую запись, страницы обновляются и, очевидно, ничего не происходит, XML такой же, как и раньше. Что я сделал не так? Кроме того, я хотел бы знать, есть ли лучший способ сделать это.