2012-03-07 8 views
-2

현재 PHP로 작성된 스크립트 (phpMyAdmin)에 데이터베이스에 연결 한 다음 모든 테이블 값을 XML 문서로 구문 분석합니다.PHP로 XML 파일 생성/쓰기?

$xmlBody .= "<XML>"; 
$sql_news = mysql_query("SELECT * FROM news_table"); 

$xmlBody .= "<News_Table>"; 

//this while loop churns out the values of our "news_table" table 
while($row_news = mysql_fetch_array($sql_news)){ 
    // Set DB variables into local variables for easier use 
    $id_news = $row_news["news_id"]; 
    $author_news = $row_news["news_author"]; 
    $time_news = $row_news["news_time"]; 
    $title_news = $row_news["news_title"]; 
    $content_news = $row_news["news_content"]; 
    $desc_news = $row_news["news_description"]; 
    $image_news = $row_news["news_image"]; 

    $xmlBody .= ' 
<News_Table_Entry> 
    <DataID>' . $id_news . '</DataID> 
    <DataAuthor>' . $author_news . '</DataAuthor> 
    <DataTime>' . $time_news . '</DataTime> 
    <DataTitle>' . $title_news . '</DataTitle> 
    <DataContent>' . $content_news . '</DataContent> 
    <DataDesc>' . $desc_news . '</DataDesc> 
    <DataImage>' . $image_news . '</DataImage> 
</News_Table_Entry>'; 
} // End while loop 

$xmlBody .= "</News_Table>"; 

mysql_close(); // close the mysql database connection 
$xmlBody .= "</XML>"; 
echo $xmlBody; 
?> 

가 어떻게 외부 XML file으로이를 작성하고 출력 할 : 여기

스크립트가 작동하는 방법입니까? 나는이 스크립트가 성공적으로 작동하도록 만들었지 만, XML에 쓰는 모든 메소드를 사용하는 것은 작동하지 않습니다.

echo 'Wrote: ' . $doc->save("/tmp/test.xml") . ' bytes'; // Wrote: 72 bytes 

fwrite 기능과 함께 기능이 작동하지 않습니다. 나는 이것을 며칠 동안 알아 내려고 노력해 왔지만, 시도해 보았던 해결책 중 어느 것도 효과가 없었다. 어떤 도움이나 통찰력이라도 대단히 감사하겠습니다!

+0

확장 성 및 유지 관리를 위해 일련 번호를 조사해야합니다. http://pear.php.net/package/XML_Serializer/redirected –

+0

'$ doc'을 (를) 확인하십시오. 당신은'DOMDocument' 또는'SimpleXML'을 사용하고 있지 않습니까? 그러므로'save' 메쏘드는 정의되어 있지 않습니다. – Raptor

+0

해결책을 얻으시겠습니까? –

답변

2

file_put_contents('/path/to/output.xml', $xmlBody);를 시도하는 데 도움이됩니다. XML 파일은 일반 텍스트 파일이므로이 경우 유효성을 검사하고 렌더링하는 특수 XML 함수는 필요하지 않습니다.

file_put_contents('/tmp/test.xml', $xmlBody); 

file_put_contents 당신이 모든 fopen을 /에 fwrite 기능을 포기 할 수 있습니다, 그래서 그것은 디스크에 내용을 작성하는 가장 쉬운 방법 : 대신, 당신은 단순히 .xml 파일에 텍스트를 저장할 수 있습니다. 당신은 모든 종과 일관성의 휘파람으로 구조화 된 XML 문서를 구축 배우고 싶은 경우 반면에


, SimpleXML 또는 XMLWriter를 찾아보십시오. 그렇게 오버 헤드가 조금 더 많지만 손으로 ​​모든 마크 업을 수행하는 것은 다루기 힘들 수 있습니다. 특히 한 번의 오타가 전체 문서를 무효화 할 수있는 경우 특히 그렇습니다.

0

이 이미 XML을 직접 컨텐츠 구축하고, 당신

$xml_msg_in = fopen('/tmp/test.xml',"w"); 
fwrite($xml_msg_in,$xmlBody); 
fclose($xml_msg_in); 
0

당신이 당신의 코드에 따라

-1
  • 이해하기 만하면 echo $xmlBody; 줄은 적어도 예상대로 작동합니까?

  • 그리고 성공없이 XML 파일을 사용하려는 경우 XML 헤더의 첫 번째 행이 누락 된 것입니다. 데이터베이스의 데이터에 따라,이 헤더는 UTF-16 인코딩을 넓게 지정해야

    <?xml version="1.0"?> 
    
  • 참고. 그러나 해당 데이터베이스에서 허용 할 문자 집합을 선택해야합니다.

    <?xml version="1.0" encoding="UTF-16"?> 
    
  • 그리고 당신의 코드 샘플의 끝 부분에 후행 ?> 무엇인가?