PHP输出xml数据
问题描述:
我制作一个从数据库中获取数据的外观时间表。但在我的情况下,我直接将数据提取到文件数据* .xmlPHP输出xml数据
或者换句话说,我会进行定期数据收集调度。 但是这导致我显示的数据不是动态的。因为它只能读取文件*。 xml它。我想创建的PHP和XML数据的功能outpunya是这样的:
<?php
header("Content-type: text/xml");
$dbhost = "localhost";
$dbuser = "user";
$dbpass = "pass";
$dbname = "my_epg";
mysql_connect($dbhost,$dbuser,$dbpass);
mysql_select_db($dbname);
include "Encoding.php";
date_default_timezone_set("Asia/Jakarta");
$DataTanggal = strip_tags(date("l, jS, F Y"));
sql = "select distinct(channel_name) FROM epg";
$q = mysql_query($sql) or die(mysql_error());
$xml = "<timetable start='00:00' end='24:00' title='".$DataTanggal."'>";
while($r = mysql_fetch_array($q)){
$CN = htmlspecialchars(strip_tags($r['channel_name']));
$xml .= "<location name='".$CN."'>";
$sql2 = "select * FROM epg where channel_name='".$CN."'";
$q2 = mysql_query($sql2) or die(mysql_error());
while($r2 = mysql_fetch_array($q2)){
$Mulai = htmlspecialchars(strip_tags(date('H:i', strtotime($r2['waktu_mulai']))));
$Selesai = htmlspecialchars(strip_tags(date('H:i', strtotime($r2['waktu_akhir']))));
$Title = htmlspecialchars(strip_tags($r2['judul']));
$Desk = htmlspecialchars(strip_tags($r2['sinopsis']));
$Encoding1 = Encoding::fixUTF8($TitleValid);
$Encoding2 = Encoding::fixUTF8($DeskValid);
$xml .= "<event start='".$MulaiValid."' end='".$SelesaiValid."'>";
$xml .= "<title>".$Encoding1."</title>";
$xml .= "<description>".$Encoding2."</description>";
$xml .= "</event>";
}
$xml .= "</location>";
}
$xml .= "</timetable>";
echo $xml;
?>
这个成功过程php文件和输出的结果一样访问的* .xml。现在我使用timetable.class.php来处理这些数据的问题。
public function createTimetable($url) {
//Load xml file
$xml = @simplexml_load_file($url, NULL, LIBXML_NOCDATA);
if(!$xml) {
echo 'Error: there is an error in your XML file: <a href="'.$url.'">'.$url.'</a>';
return;
}
if (strpos($url, 'http://') === 0 || strpos($url, 'https://') === 0 || strpos($url, 'ftp://') === 0) {
echo 'Error: the path to your xml file may not start with "http://"';
return;
}
//Set the settings
$this->setSettings($xml, $url);
$this->writeHTML($xml);
echo $this->mbencoding($this->output);
return;
}
但此功能只能用于从现有文件(* .xml)中读取数据。不是动态的php过程。
我的问题:我如何在这个class.php上创建一个进程来获取或发布数据以使其成为动态的,这样我就可以访问我已经创建了类型为xml的进程的链接地址了?
答
在你DINAMIC PHP文件的末尾,你可以将文件保存为这个生成的XML:
$file = fopen("generated.xml","w");
fwrite($file, $xml);
fclose($file);
然后,在功能createTimetable加载保存的XML文件。
http://php.net/wrappers.data.php - 让该函数允许接受http(s)/ ftp旁边的'data://'URI。 - 还有['simplexml_load_string()'](http://php.net/simplexml_load_string)。 – hakre 2013-04-09 12:12:42