此页面包含以下错误:第1行第1行的错误:文档为空

时间:2014-03-08 08:43:11

标签: php xml

我无法找到解决方案,请帮忙。下面是代码。提前致谢

<?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>

我无法找到解决方案,请帮忙。下面是代码。提前致谢

4 个答案:

答案 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文档无效。

  1. 卸下:

    echo $name.$Lname.$num; 
    

    Ref. prolog.这就是导致您目击的错误的原因。

  2. 在表单数据上中止脚本(或使用 else 子句):

    print($xml->asXML());
    exit(0);
    

    否则,您可以在XML文档的尾随部分中获取数据。

  3. 对于有效的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中的等价物。