我无法找到解决方案,请帮忙。下面是代码。提前致谢
<?php
if(isset($_POST['submit'])){
$name = $_POST['name'];
$Lname = $_POST['lastName'];
$num = $_POST['number'];
echo $name.$Lname.$num;
$xml = new SimpleXMLElement("<?xml version='1.0' encoding='UTF-8'?><Person></Person>");
Header('Content-type:text/xml');
$name = $xml->addChild('name',$name);
$Lname = $xml->addChild('LastName',$Lname);
$Number = $xml->addChild('Number',$num);
print($xml->asXML());
}
?>
<!DOCTYPE html>
<head>
<title>XML</title>
</head>
<body>
<form method="post" action="" enctype= multipart/form-data>
<input type="text" name="name" value="Name" required/>
<input type="text" name="lastName" value="LName" required/>
<input type="text" name="number" value="Number" required/>
<input type="submit" value="send" name="submit"/>
</form>
</body>
</html>
我无法找到解决方案,请帮忙。下面是代码。提前致谢
答案 0 :(得分:4)
您需要将<form>
包裹在else
部分并删除不必要的echo
语句。工作代码..
<?php
if(isset($_POST['submit'])){
header('Content-type:text/xml');
$name = $_POST['name'];
$Lname = $_POST['lastName'];
$num = $_POST['number'];
//echo $name.$Lname.$num; //<---- Commented
$xml = new SimpleXMLElement("<?xml version='1.0' encoding='UTF-8'?><Person></Person>");
$name = $xml->addChild('name',$name);
$Lname = $xml->addChild('LastName',$Lname);
$Number = $xml->addChild('Number',$num);
print($xml->asXML());
}
else
{
?>
<!DOCTYPE html>
<head>
<title>XML</title>
</head>
<body>
<form method="post" action="" enctype= multipart/form-data>
<input type="text" name="name" value="Name" required/>
<input type="text" name="lastName" value="LName" required/>
<input type="text" name="number" value="Number" required/>
<input type="submit" value="send" name="submit"/>
</form>
</body>
</html>
<?php } ?>
<强> OUTPUT :
强>
<Person>
<name>Nameasdasd</name>
<LastName>LNameasdasd</LastName>
<Number>Number32424</Number>
</Person>
答案 1 :(得分:3)
您不能以这种方式混合XML和HTML。它使XML文档无效。
卸下:
echo $name.$Lname.$num;
Ref. prolog.这就是导致您目击的错误的原因。
在表单数据上中止脚本(或使用 else 子句):
print($xml->asXML());
exit(0);
否则,您可以在XML文档的尾随部分中获取数据。
对于有效的HTML,您还需要在表单中添加value for action。属性值的引号为usually optional,但会建议一致性,因此也引用 enctype 。
答案 2 :(得分:0)
<form method="post" action="" enctype= multipart/form-data>
替换为
<form method="post" action="" enctype="multipart/form-data">
答案 3 :(得分:0)
在编写或打印xml之前,只需在asp中清除缓冲区,例如:Response.Clear();我不知道它在PHP中的等价物。