2013-10-15 12 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가 newb 질문 일 수 있다면 죄송합니다. 나는 PHP mySQL에 대해 완전히 새로운 것입니다. 그래서 혼자 해결책을 찾지 못해서 미안 해요. –

+0

'file_put_contents ('output.xml', $ xml); '그 트릭을해야합니까? 여러 번 시도했지만 파일을 출력하지 않습니까? –

답변

1

나는 문서라도 내 코드 -

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

이입니다 fopen을 사용하는 것이 좋습니다 것입니다 코드는 xml 파일을 생성하고 php 코드 파일이 렌더링 된 동일한 폴더에 저장하고 파일 이름을 filetobesave로 저장합니다. 이 $fp = fopen("filetobesaved.xml",'w');을 exist-하지 않는 경우 d.xml라도 좋습니다 w 파일을 생성하고 새 디렉토리를 만들고 그것으로 당신의 .xml 파일을 저장하려는 경우 다음 당신은이

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

$fp = fopen("$dirname\\filetobesaved.xml",'w'); 
관련 문제