xml 存储数据 php,PHP将数据存于XML

很多时候,当我们数据量不大或者为了快速加载,我们要用到XML文件来存一些数据,今天我就跟大家讲讲我在PHP项目当中用过XML操作数据的一些经历。

首先,我们PHP自身本来就有相关操作XML的函数集,这样,我们操作XML,就不用再用其它插件了。

下面是PHP自身的XML函数集,我在这里给予列出:

SimpleXMLElement::addAttribute — 为XML节点增加一个属性

SimpleXMLElement::addChild — 为XML增加一个子节点

SimpleXMLElement::asXML — 返回一个已经格式好了的XML

SimpleXMLElement::attributes —等同一个节点的属性集

SimpleXMLElement::children — 通过给的节点去查找子节点

SimpleXMLElement::__construct — 构造函数,创建一个新的XML对象

SimpleXMLElement::count — 计算一个节点的子节点总数

SimpleXMLElement::getDocNamespaces — 返回document命名空间

SimpleXMLElement::getName — 取得XML节点的名字

SimpleXMLElement::getNamespaces — 返回一个使用的document的命名空间的名字

SimpleXMLElement::registerXPathNamespace — Creates a prefix/ns context for the next XPath query

SimpleXMLElement::xpath — Runs XPath query on XML data

具体的运用:

$data = '<?xml version="1.0" encoding="gb2312" ?>'; //创建XML文件头部

$xml = new SimpleXMLElement($data); //构造一个XML对象,并且把对应的头部以参数的形式给出;

$id = intval(getRequest('id', 0));

$lotid = intval(getRequest('lotid', 0));

$PrizeBulle = News_Article::getPrize($id); //从数据库中取数据;

$prizecount = count($PrizeBulle);

if(!empty($PrizeBulle))

{

$m = $xml->addChild('state',100); //创建子节点state

$m = $xml->addChild('message',iconv('gbk','utf-8','获取成功')); //注意,如果是中文,

//则要转码后才行,不然会是乱码;

$list = $xml->addChild('list');

for ($i = 0;$i < $prizecount; $i++)

{

$row = $list->addChild('row');

$row->addChild('title',iconv('gbk','utf-8',$PrizeBulle[$i]['TITLE'])); //为子节点再增加节点

$row->addChild('imgadd',$PrizeBulle[$i]['TICKETURL']);

$row->addChild('user',iconv('gbk','utf-8',$PrizeBulle[$i]['INITIATOR']));

$row->addChild('prizedetail',iconv('gbk','utf-8',$PrizeBulle[$i]['PRIZEDESCRIPTION']));

$row->addChild('fatype',iconv('gbk','utf-8',$PrizeBulle[$i]['PLAYTYPE']));

$row->addChild('lotid',$lotid);

$row->addChild('playtype',$PrizeBulle[$i]['PLAYTYPEID']);

$row->addChild('pid',$PrizeBulle[$i]['PROJECTID']);

}

}else{

$m = $xml->addChild('state',109);

$m = $xml->addChild('message',iconv('gbk','utf-8','获取失败'));

}

header("content-type: text/xml"); //设置header头信息

echo $xml->asXML(); //输出XML文件的内容

这里需要注意的就是转码问题,如果XML当中有中文,并且编码与XML不一致,则需要先转码后才进行输出;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值