代码之家  ›  专栏  ›  技术社区  ›  Kelvin

php readfile xml始终返回零大小

  •  0
  • Kelvin  · 技术社区  · 5 年前

        if (isset($_REQUEST['action'])) {
    
    $dobot = <<< 'dobotxml'
    <root>
    <row_StudioVersion>
    <item_0>Ver-1412</item_0>
    </row_StudioVersion>
    </root>
    dobotxml;
    
            $xml = new SimpleXMLElement($dobot);
            $arraysize = sizeof( $_POST ) - 1;
            $rowsize = 7;
            for ($i=0; $i < $arraysize/$rowsize; $i++ ) {
                $row = $xml->addChild("row{$i}");
                $row->addChild("item_0", $_POST["t_{$i}"]);
                $row->addChild("item_1", $_POST["n_{$i}"]);
                $row->addChild("item_2", $_POST["x_{$i}"]);
                $row->addChild("item_3", $_POST["y_{$i}"]);
                $row->addChild("item_4", $_POST["z_{$i}"]);
                $row->addChild("item_5", $_POST["r_{$i}"]);
                $row->addChild("item_10",$_POST["p_{$i}"]);
            }
    
    
            header('Content-disposition: attachment; filename="newfile.xml"');
            header('Content-type: "text/xml"; charset="utf8"');
            readfile("newfile.xml");
            exit;
        }
    

    我确保$xml中有内容,如果我打印($xml),它将导出

    SimpleXMLElement Object ( [row_StudioVersion] => SimpleXMLElement Object ( [item_0] => Ver-1412 ) [row0] => SimpleXMLElement Object ( [item_0] => 0 [item_1] => dsf [item_2] => 1230 [item_3] => 230 [item_4] => 043 [item_5] => 2130 [item_10] => 340 ) [row1] => SimpleXMLElement Object ( [item_0] => 2 [item_1] => 34 [item_2] => 0123 [item_3] => 430 [item_4] => 034 [item_5] => 023 [item_10] => 03 ) [row2] => SimpleXMLElement Object ( [item_0] => 0 [item_1] => SimpleXMLElement Object ( ) [item_2] => 0 [item_3] => 0 [item_4] => 0 [item_5] => 0 [item_10] => 0 ) )
    

    预期产量

    <?xml version="1.0"?>
    <root>
        <row_StudioVersion>
            <item_0>Ver-1412</item_0>
        </row_StudioVersion>
        <row0>
            <item_0>0</item_0>
            <item_2>10</item_2>
            <item_3>20</item_3>
            <item_4>30</item_4>
            <item_5>0</item_5>
            <item_10>0</item_10>
        </row0>
        <row1>
            <item_0>0</item_0>
            <item_2>40</item_2>
            <item_3>50</item_3>
            <item_4>60</item_4>
            <item_5>0</item_5>
            <item_10>0</item_10>
        </row1>
    </root>
    
    0 回复  |  直到 5 年前
        1
  •  0
  •   Kelvin    5 年前

    我终于找到了解决方案,工作得很好。

    header('Content-Disposition: attachment; filename="newfile.xml"');
    header('Content-Type: "text/xml"; charset="utf8"');
    echo $xml->asXML();