仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 881|回复: 19
打印 上一主题 下一主题

[学习教程] PHP网站制作之用PHP5的SimpleXML解析XML文档

[复制链接]
活着的死人 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-3 23:56:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
我的文章不会对您的学习起到实质性的作用,您能否成功,还得靠自己的,坚持,坚持,再坚持,就是步入成功的不二法门。php5|xml   messages.xml
========================================================
<?xml version="1.0" ?>
<!--Sample XML document -->
<SystemMessage>
     <MessageTitle>System Down for Maintenance</MessageTitle>
    <MessageBody>Going down for maintenance soon!</MessageBody>
    <MessageAuthor>
   <MessageAuthorName>Joe SystemGod</MessageAuthorName>
   <MessageAuthorEmail>systemgod@someserver.com
</MessageAuthorEmail>
    </MessageAuthor>
    <MessageDate>March 4, 2004</MessageDate>
   <MessageNumber>10</MessageNumber>

</SystemMessage>
========================================================
xml 是一种创立元数据的言语,元数据是描写其它数据的数据,PHP中的XML处置是基于LIBXML2的,装置时默许开启。
可以经由过程phpinfo()函数检查是不是开启了XML处置模块,DOM,LIBXML,SAMPLEXML。
起首,经由过程samplexml_load_file函数把xml文件加载到一个对象中,samplexml_load_file可以用户近程文件.
例如:
$xml = samplexml_load_file("messages.xml"); // 当地文件体系,以后目次
$xml = samplexml_load_file("http://www.xml.org.cn/messages.xml"); // 近程web办事器
用 var_dump($xml) 和 print_r($xml) 分离输入其布局.var_dump给出了变量的类型和长度,而print_r可读性更强
输入对象中的一切元素称号和它的值.

echo $xml->MessageTitle; //输入动静的题目
echo $xml->MessageBody; // 输入动静体
echo $xml->MessageAuthor; //动静的作者
echo $xml->MessageDate;  // 动静发生的日期
echo $xml->MessageNumber;  // 动静代码
===================================================
别的,还有一个函数,可以把XML字符串加载到一个simplexml对象中取
$channel =<<<_XML_
<channel>
<title>What's For Dinner</title>
<link>http://menu.example.com/</link>
<description>These are your choices of what to eat tonight. </description>
</channel>
_XML_;

$xml = simplexml_load_string($channel);
===================================================


rss.xml
=============================================
<?xml version="1.0" encoding="utf-8"?>
<rss version="0.91">
<channel>
 <title>What's For Dinner</title>
 <link>http://menu.example.com/</link>
 <description>These are your choices of what to eat tonight.</description>
 <item>
  <title>Braised Sea Cucumber</title>
  <link>http://menu.example.com/dishes.php?dish=cuke</link>
  <description>Gentle flavors of the sea that nourish and refresh you. </description>
 </item>
 <item>
  <title>Baked Giblets with Salt</title>
  <link>http://menu.example.com/dishes.php?dish=giblets</link>
  <description>Rich giblet flavor infused with salt and spice. </description>
 </item>
 <item>
  <title>Abalone with Marrow and Duck Feet</title>
  <link>http://menu.example.com/dishes.php?dish=abalone</link>
  <description>There's no mistaking the special pleasure of abalone. </description>
 </item>
</channel>
</rss>

=====================================================
1.会见具有不异元素称号的节点
2.经由过程foreach轮回一切不异元素称号的子节点
foreach($xml->channel->item as $key=>$value)
{
print "Title: " . $item->title . "\n";
}

3.输入全部文档
echo $xml->asXML();
4.把节点作为字符串输入
echo $xml->channel->item[0]->asXML();
这将输入文本
<item>
<title>Braised Sea Cucumber</title>
<link>http://menu.example.com/dishes.php?dish=cuke</link>
<description>Gentle flavors of the sea that nourish and refresh you. </description>
</item>


带文件名参数的asXML将会把本来输入的内容保留为一个文件
$xml->channel->item[0]->asXML("item[0].xml");



完全的代码:
rss.xml
=====
<?xml version="1.0" encoding="utf-8"?>
<rss version="0.91">
<channel>
 <title>What's For Dinner</title>
 <link>http://menu.example.com/</link>
 <description>These are your choices of what to eat tonight.</description>
 <item>
  <title>Braised Sea Cucumber</title>
  <link>http://menu.example.com/dishes.php?dish=cuke</link>
  <description>Gentle flavors of the sea that nourish and refresh you. </description>
 </item>
 <item>
  <title>Baked Giblets with Salt</title>
  <link>http://menu.example.com/dishes.php?dish=giblets</link>
  <description>Rich giblet flavor infused with salt and spice. </description>
 </item>
 <item>
  <title>Abalone with Marrow and Duck Feet</title>
  <link>http://menu.example.com/dishes.php?dish=abalone</link>
  <description>There's no mistaking the special pleasure of abalone. </description>
 </item>
</channel>
</rss>


rss.php
======
<?php
$xml = simplexml_load_file("rss.xml");

echo "<h3>".$xml->channel->title."</h3><br>";
echo "<ul>";
echo "<li>Title:".$xml->channel->item[0]->title."</li>";
echo "<li>Title:".$xml->channel->item[1]->title."</li>";
echo "<li>Title:".$xml->channel->item[2]->title."</li>";
echo "</ul>";
print "Title: " . $xml->channel->item[0]->title . "\n<br>";
print "Title: " . $xml->channel->item[1]->title . "\n<br>";
print "Title: " . $xml->channel->item[2]->title . "\n<br>";
echo "<hr>";

foreach ($xml->channel->item[0] as $element_name => $content) {
  print "The $element_name is $content\n<br>";
}

echo "<hr>";
print_r($xml);
echo $xml->channel->item[0]->asXML();
?>

任何XML文本在输入前最好用 htmlentiteis() 函数编码后再输入,否这能够呈现成绩
聪明的你,显然已经逐渐的开悟了,慢慢的理解了编程的概念,那么祝贺你,你已经迈出了成功的第一步。
莫相离 该用户已被删除
沙发
发表于 2015-2-4 07:11:25 | 只看该作者
最后介绍一个代码出错,但是老找不到错误方法,就是 go to wc (囧),出去换换气没准回来就找到错误啦。
透明 该用户已被删除
板凳
发表于 2015-2-4 10:04:17 | 只看该作者
个人呢觉得,配wamp 最容易漏的一步就是忘了把$PHP$目录下的libmysql.dll拷贝到windows系统目录的system32目录下,还有重启apache。
因胸联盟 该用户已被删除
地板
发表于 2015-2-6 00:57:11 | 只看该作者
在学习的过程中不能怕麻烦,不能有懒惰的思想。学习php首先应该搭建一个lamp环境或者是wamp环境。这是学习php开发的根本。虽然网络上有很多集成的环境,安装很方便,使用起来也很稳定、
若相依 该用户已被删除
5#
发表于 2015-2-7 21:30:42 | 只看该作者
我还是推荐用firefox ,配上firebug 插件调试js能省下不受时间。谷歌的浏览器最好也不少用,因为谷歌的大侠们实在是太天才啦,把一些原来的js代码加了一些特效。
冷月葬花魂 该用户已被删除
6#
发表于 2015-2-14 09:48:38 | 只看该作者
其实也不算什么什么心得,在各位大侠算是小巫见大巫了吧,望大家不要见笑,若其中有错误的地方请各位大虾斧正。
海妖 该用户已被删除
7#
发表于 2015-3-4 05:27:26 | 只看该作者
对于初学者来说不推荐去拿钱买的。当然如果一个网站你经常去用,而且里面的资料也比较有用,最好还是买个会员比较好,毕竟那些也是别人的工作成果。
小魔女 该用户已被删除
8#
发表于 2015-3-6 08:22:48 | 只看该作者
找到的的资料很多都是在论坛里的,需要注册,所以我一般没到一个论坛都注册一个id,所有的id都注册成一样的,这样下次再进来的时候就不用重复注册啦。当然有些论坛的某些资料是需要的付费的。
飘灵儿 该用户已被删除
9#
发表于 2015-3-10 00:57:16 | 只看该作者
爱上php,他也会爱上你。
再见西城 该用户已被删除
10#
发表于 2015-3-11 14:07:02 | 只看该作者
php里的数组为空的时候是不能拿来遍历的;(这个有点低级啊,不过我刚被这个边界问题墨迹了好长一会)
老尸 该用户已被删除
11#
发表于 2015-3-15 09:38:10 | 只看该作者
如果你已经到这种程度了,那么你已经可以做我的老师了。其实php也分很多的区域,
变相怪杰 该用户已被删除
12#
发表于 2015-3-22 04:09:30 | 只看该作者
写的比较杂,因为我也是个新手,不当至于大家多多指正。
13#
发表于 2015-3-26 23:40:52 | 只看该作者
做为1门年轻的语言,php一直很努力。
简单生活 该用户已被删除
14#
发表于 2015-4-4 04:44:11 | 只看该作者
你很难利用原理去编写自己的代码。对于php来说,系统的学习我认为还是很重要的,当你有一定理解后,你可你针对某种效果研究,我想那时你不会只是复制代码的水平了。
兰色精灵 该用户已被删除
15#
发表于 2015-4-9 20:55:23 | 只看该作者
这些中手常用的知识,当你把我说的这些关键字都可以熟练运用的时候,你可以选择自己
灵魂腐蚀 该用户已被删除
16#
发表于 2015-4-17 21:18:31 | 只看该作者
多看优秀程序员编写的代码,仔细理解他们解决问题的方法,对自身有很大的帮助。
愤怒的大鸟 该用户已被删除
17#
发表于 2015-4-22 11:56:02 | 只看该作者
我还是强烈建议自己搭建php环境。因为在搭建的过程中你会遇到一些问题,通过搜索或是看php手册解决问题后,你会更加深刻的理解它们的工作原理,了解到php配置文件中的一些选项设置。
乐观 该用户已被删除
18#
发表于 2015-4-24 14:47:29 | 只看该作者
在学习的过程中不能怕麻烦,不能有懒惰的思想。学习php首先应该搭建一个lamp环境或者是wamp环境。这是学习php开发的根本。虽然网络上有很多集成的环境,安装很方便,使用起来也很稳定、
只想知道 该用户已被删除
19#
发表于 2015-4-30 17:01:09 | 只看该作者
要进行开发,搭建环境是首先需要做的事,windows下面我习惯把环境那个安装在C盘下面,因为我配的环境经常出现诡异事件,什么事都没做环境有的时候就不能用啦。
蒙在股里 该用户已被删除
20#
发表于 2015-5-7 19:35:30 | 只看该作者
开发工具也会慢慢的更专业,每个公司的可能不一样,但是zend studio是个大伙都会用的。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-6-30 01:49

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表