0
我是DOMDocument和密集型PHP的新手。请原谅我的无知。我似乎不能让Process.php写入XML。我见过关于同一主题的其他帖子,但他们没有帮我解决我的问题。只是找不到我做错了什么。任何帮助将非常感激!HTML表单到PHP XML DOMDocument - 不更新XML
这里是HTML表单form.html。
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title></title>
</head>
<body>
<form name="digitalsignage" action="process.php" onsubmit="return defaultagree(this)" method="post">
<table align="center" cellpadding="2" cellspacing="0" width="50%">
<tbody><tr>
<td> Event1:</td><td>
<input name="event1" value="Unknown" type="text"> </td>
<td> Event2:</td><td>
<input name="event2" value="Unknown" type="text"> </td>
<td> Event3:</td><td>
<input name="event3" value="Unknown" type="text"> </td>
<td> Event4:</td><td>
<input name="event4" value="Unknown" type="text"> </td>
<td> Event5:</td><td>
<input name="event5" value="Unknown" type="text"> </td>
</tr>
<tr>
<td colspan="4" style="text-align:center;">
<input name="lsr-submit" value="Submit" type="submit"></td>
</tr>
</tbody></table>
</form>
</body>
</html>
XML文件,file.xml:
<?xml version="1.0" encoding="ISO-8859-1"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<atom:link href="http://www.SERVER-URL-OF-FEED" rel="self" type="application/rss+xml" />
<title>Todays Events</title>
<item>
<description>
<event1>Event 1</event1>
<event2>Event 2</event2>
<event3>Event 3</event3>
<event4>Event 4</event4>
<event5>Event 5</event5>
</reports>
</item>
</channel>
</rss>
的PHP,process.php
<?php
$event1 = $_POST['event1'];
$event2 = $_POST['event2'];
$event3 = $_POST['event3'];
$event4 = $_POST['event4'];
$event5 = $_POST['event5'];
$xml = new DOMDocument();
$xml->load('file.xml');
$xml->formatOutput = true;
$xml->preserveWhiteSpace = false;
$element = $xml->getElementsByTagName('description')->item(0);
if ($element->length > 0) {
$event1 = $element->getElementsByTagName('event1')->item(0);
$event2 = $element->getElementsByTagName('event2')->item(0);
$event3 = $element->getElementsByTagName('event3')->item(0);
$event4 = $element->getElementsByTagName('event4')->item(0);
$event5 = $element->getElementsByTagName('event5')->item(0);
$newItem = $xml->createElement('description');
$newItem->appendChild($xml->createElement('event1', $_POST['event1']));
$newItem->appendChild($xml->createElement('event2', $_POST['event2']));
$newItem->appendChild($xml->createElement('event3', $_POST['event3']));
$newItem->appendChild($xml->createElement('event4', $_POST['event4']));
$newItem->appendChild($xml->createElement('event5', $_POST['event5']));
$xml->getElementsByTagName('item')->item(0)->appendChild($newItem);
}
$xml->save('file.xml');
echo "Data has been written.";
?>
和究竟是什么问题?你没有描述它。请阅读我们的帮助部分,了解如何创建MCVE (http://stackoverflow.com/help/mcve)并将其添加到您的问题中。 您将以这种方式从社区获得更快,更好的帮助。 – ochi 2015-04-01 19:50:22
我的服务器管理员更新了权限。现在它可以保存,但保存除第一条XML行之外的空文件。我难倒了。 – 2015-04-01 20:10:44
@ochi,不知道我在创建一个MCVE时需要帮助,因为我的后续评论指出:“我的服务器管理员更新了权限,现在可以保存,但它保存了一个空文件,除了第一条XML线以外,我陷入了困境。不知道如何解释清楚,但我会尝试。上面的文件一旦被授权写入服务器,只会用第一行更新XML文件,而不是其他任何东西。 – 2015-04-08 19:27:15