Преподавайки себе си на 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" елементи и да добавя децата само към най-новия елемент.
Всяка помощ/съвети ще бъдат оценени.