2013-10-15 36 views
0

你好,我在这里再次。在我的最后一个问题XML parsing error (RESOLVED) XML Sample后,这真的帮助我了解更多。我在另一堵砖墙上跑。XMLWrite将文件输出到与php脚本相同的目录

我的问题: 我需要做的是在我的php文档所在的同一目录下编写一个.xml文件。所以当我执行脚本时,它应该自动将一个.xml文件保存到php文件所在的目录中。这是可能的和如何?

目前,我试图输出使用openURI文件,但是当我这样做,我发现了以下错误(来自荷兰翻译):

的有趣的事情是,如果我使用PHP:/ /输出它在浏览器中正确显示它的全部内容。

XML-Parse Error: no element found 
Location: xml.php 
Rownumber 1, column 1: 

代码:

<?php 
    //SELECTEER ALLES VAN DATABASE PROJECTEN 
    $sql = "SELECT * FROM projecten ORDER BY id"; 
    $res = mysql_query($sql); 

    //BEGIN XML 
    $xml = new XMLWriter(); 
    $xml->openURI('file.xml'); 
    $xml->setIndentString ('&#09;'); 
    $xml->startDocument('1.0', 'UTF-8', 'no'); 
    $xml->setIndent(true); 

    //FUNCTIE VOOR MAKKELIJKER INVOEREN 
    function addNode($xml, $NodeName, $Value) { 
    $xml->startElement($NodeName); 
    $xml->writeCData($Value); 
    $xml->endElement();  
    } 

    //START HOOFD ELEMENT 
    $xml->startElement('projecten'); 

    //WHILE LOOP DOOR DATABASE 
    while ($row = mysql_fetch_assoc($res)) { 

      //START PROJECT 
      $xml->startElement('project'); 
      $xml->writeAttribute('id', $row['id']); 

       addNode($xml, "id", $row["id"]); 
       addNode($xml, "projectnaam", $row['projectnaam']); 
       addNode($xml, "status", $row['status']); 
       addNode($xml, "klantnaam", $row['klantnaam']); 
       addNode($xml, "startdatum", $row['startdatum']); 
       addNode($xml, "eindddatum", $row['einddatum']); 

      //EIND PROJECT 
      $xml->endElement(); 
    } 

    //EINDE HOOFD ELEMENT 
    $xml->endElement(); 

    //EINDE DOCUMENT 
    $xml->endDocument(); 
    header('Content-type: text/xml'); 
    $xml->flush(); 
?> 

在此先感谢,再次...

+0

你有没有尝试搜索?您可以使用['file_put_contents()'](http://php.net/manual/en/function.file-put-contents.php)写入文件。 –

+0

如果这可能是一个新问题,我很抱歉Amal Murali。我对PHP mySQL完全陌生等等。所以我很抱歉,如果我自己找不到解决方案.. –

+0

'file_put_contents('output.xml',$ xml); “那么应该怎么办?我已经尝试过多次,但它不输出文件? –

回答

1

我会建议你使用fopen。这里是我的代码 -

<?php 
include('db.php'); 
$sql = "SELECT * FROM `data`"; 

$result = mysqli_query($conn,$sql); 

$xml = new XMLWriter(); 
$xml->openMemory(); 
$xml->setIndent(true); 
function addNode($xml,$NodeName,$Value){ 
    $xml->startElement($NodeName); 
    $xml->writeCData($Value); 
    $xml->endElement(); 

} 
$xml->startElement('Details'); 
while($row = mysqli_fetch_assoc($result)){ 
    $xml->startElement('Data'); 
    $xml->writeAttribute('date',$row['date']); 
    addNode($xml,"Id",$row["id"]); 
    addNode($xml,"age",$row["age"]); 
    addNode($xml,"Name",$row["name"]); 
    $xml->endElement(); 
} 
$xml->endElement(); 
$xml->endDocument(); 

$content = $xml->flush(); 

$fp = fopen("filetobesaved.xml",'w'); 
fwrite($fp,$content); 
fclose($fp); 
header('Content-type: text/xml'); 
echo $content; 
?> 

这代码将创建一个生成一个xml文件,并将其保存在您的php代码文件所在的同一文件夹中,并将其保存为名称filetobesave d.xml。这里w将创建该文件,如果它不exist- $fp = fopen("filetobesaved.xml",'w');,如果你想创建一个新的目录并保存.xml文件到它,那么你可以做这种way-

$filename = 'D:/foldertobecreated/filetobesaved.xml'; 
$dirname = dirname($filename); 
if (!is_dir($dirname)) 
{ 
    mkdir($dirname, 0755, true); 
} 

$fp = fopen("$dirname\\filetobesaved.xml",'w'); 
相关问题