实现动态XML

实现动态XML

首先建表:
CREATETABLEbooks(
bookidint(4)NOTNULLauto_increment,
booknamevarchar(100)NOTNULL,
bookauthvarchar(50)NOTNULL,
bookpublishervarchar(50)NOTNULL,
bookpubdatedatetimeNOTNULL,
bookurlvarchar(50)NOTNULL,
KEYbookid(bookid),
);

然后。。。这段是从MYSQL里取数据转化成XML的源代码:
<?
$connect_id
=mysql_connect("localhost","root","");
mysql_select_db("bbs",$connect_id);
$query="select*frombooksorderbybookid";
$rs=mysql_query($query,$connect_id);
$numfields=mysql_num_fields($rs);
$xmlfile="<?xmlversion="1.0"encoding="GB2312"?>n";
$xmlfile.="<books>n";

while(
$row=mysql_fetch_array($rs)){
for(
$i=0;$i<$numfields;$i++){
$fieldname=mysql_field_name($rs,$i);
$xmlfile.="<".$fieldname.">".$row[$i]."</".$fieldname.">n";
}
}
mysql_free_result($rs);
mysql_close($connect_id);
$xmlfile.="</books>n";
$fp=fopen("xmldoc/xmldoc.xml","w");
if(
fwrite($fp,$xmlfile)){
echo
"写入文件成功!";
}
else{
echo
"写入文件失败!";
}
?>

这段是从XML里取数据转化成HTML的源代码。。。
<?
classxml{
var
$parser;

function
xml(){
$this->parser=xml_parser_create();
xml_set_object($this->parser,&$this);
xml_set_element_handler($this->parser,"tag_on","tag_off");
xml_set_character_data_handler($this->parser,"cdata");
}

function
parse($data){
xml_parse($this->parser,$data);
}

function
tag_on($parser,$tag,$attributes){
if(
xml_get_current_line_number($parser)==2){
echo
"<tr><tdcolspan="2"align="center">".$tag."</td>";
}
else{
switch((
xml_get_current_line_number($parser)-2)%6){
case
0:
echo
"<tr><td>下载<td>";
break;
case
1:
echo
"<tr><td>ID号<td>";
break;
case
2:
echo
"<tr><td>书名<td>";
break;
case
3:
echo
"<tr><td>作者<td>";
break;
case
4:
echo
"<tr><td>出版社<td>";
break;
case
5:
echo
"<tr><td>出版日期<td>";
break;
}
}
}

function
cdata($parser,$cdata){
echo
$cdata;
}

function
tag_off($parser,$tag){
echo
"n";
}
}

$xml_parser=newxml();
$xmlfilename="xmldoc/xmldoc.xml";
$fp=fopen($xmlfilename,"r");
$xmldata=fread($fp,filesize($xmlfilename));
?>
<html><head><title>图书信息</title></head>
<body>
<tableborder="0"cellspacing="1"cellpadding="2"width="80%"bgcolor="<?
$xml_parser
->parse($xmldata);
?>
</table>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值