在PHP中将http post和save转换为XML
我试图编写一个程序,从联系人表单中接收http post数据,然后将表单处理为.xml格式。我可以创建一些需要的标签,但在发送表单时没有输入任何值。以下是示例表单代码:在PHP中将http post和save转换为XML,php,xml,Php,Xml,我试图编写一个程序,从联系人表单中接收http post数据,然后将表单处理为.xml格式。我可以创建一些需要的标签,但在发送表单时没有输入任何值。以下是示例表单代码: <form action="t.php" target="_top" method="post" accept-charset="utf-8"><div style="display:none;"><input type="hidden" name="_method" value="POST"/
<form action="t.php" target="_top" method="post" accept-charset="utf-8"><div style="display:none;"><input type="hidden" name="_method" value="POST"/></div>
<div class="form-field title">
<div class="input select"><label for="title">Title</label>
<select id="title">
<option value="">(Please choose)</option>
<option value="0">Mr</option>
<option value="1">Mrs</option>
<option value="2">Miss</option>
</select></div> </div>
<div class="form-field float-left">
<div class="input text"><label for="fname">First Name</label>
<input name="fname" value="" maxlength="150" type="text" id="fname"/></div>
</div>
<div class="form-field float-left ">
<div class="input text"><label for="lname">Last Name</label>
<input name="lname" value="" maxlength="150" type="text" id="lname"/>
</div>
</div>
</form>
标题
(请选择)
先生
夫人
错过
名字
姓
下面是要处理的php文件:
<?php
$xmldoc = new DomDocument( '1.0' );
$xmldoc->preserveWhiteSpace = false;
$xmldoc->formatOutput = true;
$title = $_POST['title'];
$fname = $_POST['fname'];
$lname = $_POST['lname'];
if( $xml = file_get_contents( 'data.xml') ) {
$xmldoc->loadXML( $xml, LIBXML_NOBLANKS );
// find the headercontent tag
$root = $xmldoc->getElementsByTagName('headercontent')->item(0);
// create the <lead> tag
$lead = $xmldoc->createElement('lead');
$numAttribute = $xmldoc->createAttribute("num");
$numAttribute->value = $productNum;
$lead->appendChild($numAttribute);
// add the lead tag before the first element in the <headercontent> tag
$root->insertBefore( $lead, $root->firstChild );
$titleElement = $xmldoc->createElement('title');
$lead->appendChild($titleElement);
$titleText = $xmldoc->createTextNode($title);
$titleElement->appendChild($titleText);
$fnameElement = $xmldoc->createElement('fname');
$lead->appendChild($fnameElement);
$fnameText = $xmldoc->createTextNode($fname);
$fnameElement->appendChild($fnameText);
$lnameElement = $xmldoc->createElement('lname');
$lead->appendChild($lnameElement);
$lnameText = $xmldoc->createTextNode($lname);
$lnameElement->appendChild($lnameText);
$xmldoc->save('data.xml');
echo "data saved.";
?>
preserveWhiteSpace=false;
$xmldoc->formatOutput=true;
$title=$_POST['title'];
$fname=$_POST['fname'];
$lname=$_POST['lname'];
if($xml=file\u get\u contents('data.xml')){
$xmldoc->loadXML($xml,LIBXML_NOBLANKS);
//找到headercontent标签
$root=$xmldoc->getElementsByTagName('headercontent')->项(0);
//创建标记
$lead=$xmldoc->createElement('lead');
$numAttribute=$xmldoc->createAttribute(“num”);
$numAttribute->value=$productNum;
$lead->appendChild($numAttribute);
//在标记中的第一个元素之前添加lead标记
$root->insertBefore($lead,$root->firstChild);
$titleElement=$xmldoc->createElement('title');
$lead->appendChild($titleElement);
$titleText=$xmldoc->createTextNode($title);
$titleElement->appendChild($titleText);
$fnameElement=$xmldoc->createElement('fname');
$lead->appendChild($fnameElement);
$fnameText=$xmldoc->createTextNode($fname);
$fnameElement->appendChild($fnameText);
$lnamelement=$xmldoc->createElement('lname');
$lead->appendChild($lnamelement);
$lnameText=$xmldoc->createTextNode($lname);
$lnameElement->appendChild($lnameText);
$xmldoc->save('data.xml');
回显“数据已保存。”;
?>
但这是我得到的结果:
<?xml version="1.0" encoding="UTF-8"?>
<headercontent>
<lead>
<title></title>
<fname></fname>
<lname></lname>
</lead>
</headercontent>
它只是附加了容器标签(这是需要的),但没有输入值(这是不需要的)。任何帮助都将不胜感激
干杯我没有看到任何
元素包装您的输入字段?您的选择没有名称属性(尽管您似乎试图通过url参数填充$title
变量)。请检查,这是您试图创建的整个xml吗?您是否尝试过简单地执行:$xmldoc->createElement(“title”),$title);
等等?或者您可以尝试$lead->appendChild($titleElement)
在添加实际文本节点后?另外,请确保$title
、$fname
和$lname
确实包含适当的数据。请尝试在t.php
中启用错误报告。脚本中还有一个名为$productNum
的未定义变量。感谢您提供的信息,它输入了正确的e值,我必须添加'select name'属性和'input name'到3个标记-将发回正确的代码。