На этой неделе я изучаю PHP, и в качестве тестового проекта я создал очень простой микроблог, который использует данные XML для хранения/получения короткой информации о сообщениях. Я сослался на этот вопрос, и ему удалось подтолкнуть меня к созданию XML-документа, похожего на то, что я хотел.
Однако я столкнулся с одной проблемой, которую не мог решить самостоятельно. В связанном решении один и тот же объект обновляется снова и снова без добавления в него какой-либо новой информации:
Пример, «третий тестовый пост»:
<postslist>
<post>
<name>Third Post</name>
<date>2013-11-05</date>
<time>00:00</time>
<text>There is some more post text here.</text>
</post>
</postslist>
И «четвертый тестовый пост»:
<postslist>
<post>
<name>Fourth Post</name>
<date>2013-11-05</date>
<time>00:00</time>
<text>There is even more post text here.</text>
</post>
</postslist>
Мой PHP до сих пор похож на это:
$postname = $_POST["name"];
$postdate = $_POST["date"];
$posttime = $_POST["time"];
$posttext = $_POST["posttext"];
$postname = htmlentities($postname, ENT_COMPAT, 'UTF-8', false);
$postdate = htmlentities($postdate, ENT_COMPAT, 'UTF-8', false);
$posttime = htmlentities($posttime, ENT_COMPAT, 'UTF-8', false);
$posttext = htmlentities($posttext, ENT_COMPAT, 'UTF-8', false);
$xml = simplexml_load_file("posts.xml");
$xml->post = "";
$xml->post->addChild('name', $postname);
$xml->post->addChild('date', $postdate);
$xml->post->addChild('time', $posttime);
$xml->post->addChild('text', $posttext);
$doc = new DOMDocument('1.0');
$doc->formatOutput = true;
$doc->preserveWhiteSpace = true;
$doc->loadXML($xml->asXML(), LIBXML_NOBLANKS);
$doc->save('posts.xml');
Что я надеюсь сделать, так это создать несколько элементов «post» и добавить дочерние элементы только к самому новому элементу.
Любая помощь/советы будут оценены.