Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中将http post和save转换为XML_Php_Xml - Fatal编程技术网

在PHP中将http post和save转换为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"/

我试图编写一个程序,从联系人表单中接收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"/></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个标记-将发回正确的代码。