【问题标题】:Saving HTML form data to XML file将 HTML 表单数据保存到 XML 文件
【发布时间】:2020-06-14 08:59:39
【问题描述】:

我正在尝试将 HTML 表单的结果保存到 XML 文件以供以后处理。表单有 不幸的是,看起来我一次只能保存一个答案,但我想将所有答案都写在 XML 文件中。这是我尝试过的:

<?php
if(isset($_POST['submit']))
{
    $mileage = $_POST['form'];
    $file = fopen("data.xml","r+");
    fwrite($file,$mileage);
    fclose($file); 
    print_r(error_get_last());
}
?>

<form action= "" method="post" name="form">
<input type="hidden" value = "<?xml version='1.0' encoding='UTF-8'?>"/>
<input type="hidden" value="<miles>"/>
<span class="XMLsimpleType" onclick="selectelm(this, event);" ondblclick="selectelm(this, event);">
<label>Car: </label>
<input type="text" class="car" name="car" value="" onfocus="focusGained(this)" onchange="textChanged(this)" /></span>
<br/></span>
<br>
<span class="XMLsimpleType" onclick="selectelm(this, event);" ondblclick="selectelm(this, event);">
<span class="bike">
<label>Bike: </label>
<input type="text" class="bike" name="bike" value="" onfocus="focusGained(this)" onchange="textChanged(this)" /></span>
<br/></span>
<br>
<input type="hidden" value="</miles>"/>
<input type="submit" name="submit" value="submit"><br>
</form>

表单应该创建一个格式正确的简单 XML 文件,如下所示:

<?xml version='1.0' encoding='UTF-8'?>
<miles>
<car>123</car>
<bike>245</bike>
</miles>

过去四个小时我一直在研究这个问题,我知道我可以让它变得更简单,但首先我想让它正常工作。我可以编写单个表单条目,但不能编写带有 XML 信息的整个表单。我做错了什么?

【问题讨论】:

  • 您无法按照您尝试的方式处理表单。一方面,您的 $_POST 数组仅包含具有名称属性的输入元素(即汽车、自行车和表单中的提交)。答案是使用 SimpleXMLElement 将您的 $_POST 数组转换为有效的 XML 结构,请参阅链接 [link]stackoverflow.com/questions/1397036/…
  • 我尝试使用句点、逗号和空格将所有输入元素合并到一个 $_Post 中,但这些都不起作用。我将研究 SimpleXMLElement,除非有更简单的方法来组合。

标签: php html xml forms


【解决方案1】:

这应该可以(我已将表单和处理分成两个单独的文件):

yourform.php(简体):

<form action='showXML.php' method='POST'>
car <input type='text' name='car'>
<br />
bike <input type='text' name='bike'>
<input type='submit' name='submit' value='submit'>
</form>

showXML.php:

<?php
if(isset($_POST['submit']))
{
$xml = new SimpleXMLElement("<?xml version=\"1.0\" encoding=\"utf-8\" ?><miles></miles>");

    $xml->addChild('car', $_POST['car']);
    $xml->addChild('bike', $_POST['bike']);

    $asXML = $xml->asXML();
    $file = fopen("data.xml","w+");
    fwrite($file,$asXML);
    fclose($file); 
    print_r(error_get_last());

    if(file_exists('./data.xml'))
    {
        $myXML = file_get_contents('./data.xml');
        $xml = new SimpleXMLElement($myXML);
        $xmlpretty = $xml->asXML();

        // pretty print the XML in browser
        header('content-type: text/xml');
        echo $xmlpretty;
    }

}
?>

【讨论】:

  • 那行得通。我正在接近 SimpleXMLElement,但我不知道如何将 $_Post 与数组一起使用。我正要尝试将 $asXML 写入文件,这就是您所做的。太好了,工作,谢谢。
  • 谢谢哈罗德,很高兴我能帮上忙
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多