仓酷云

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

[学习教程] PHP网站制作之php simplexmlElement操作xml的定名空间...

[复制链接]
逍遥一派 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-3 23:40:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
既然选择了PHP,就要坚持学下去!大家有没有问自己为什么会选择学习PHP呢?就我个人而言,完全是因为兴趣,因为我的专业和计算机完全无关,但是就是对编程很赶兴趣,尤其对网络编程、web开发特别赶兴趣。   看了这个成绩,第一个反响就是namespace的关系,但我历来没有利用simplexml操作过namespace,因而就掀开手册查了一下材料,成绩并没有处理,终究是经由过程谷歌处理了该成绩。

发问题的伴侣贴出了数据源,来自于:http://code.谷歌.com/intl/zh-CN/apis/contacts/docs/3.0/developers_guide_protocol.html#retrieving_without_query,数据布局大致以下:
复制代码 代码以下:
<feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearch/1.1/' xmlns:gContact='http://schemas.谷歌.com/contact/2008' xmlns:batch='http://schemas.谷歌.com/gdata/batch' xmlns:gd='http://schemas.谷歌.com/g/2005' gd:etag='W/"CUMBRHo_fip7ImA9WxRbGU0."'>
<id>liz@gmail.com</id>
<updated>2008-12-10T10:04:15.446Z</updated>
<category scheme='http://schemas.谷歌.com/g/2005#kind' term='http://schemas.谷歌.com/contact/2008#contact' />
<title>Elizabeth Bennet's Contacts</title>
<link rel='http://schemas.谷歌.com/g/2005#feed' type='application/atom+xml' href='https://www.谷歌.com/m8/feeds/contacts/liz%40gmail.com/full' />
<link rel='http://schemas.谷歌.com/g/2005#post' type='application/atom+xml' href='https://www.谷歌.com/m8/feeds/contacts/liz%40gmail.com/full' />
<link rel='http://schemas.谷歌.com/g/2005#batch' type='application/atom+xml' href='https://www.谷歌.com/m8/feeds/contacts/liz%40gmail.com/full/batch' />
<link rel='self' type='application/atom+xml' href='https://www.谷歌.com/m8/feeds/contacts/liz%40gmail.com/full?max-results=25' />
<author>
<name>Elizabeth Bennet</name>
<email>liz@gmail.com</email>
</author>
<generator version='1.0' uri='http://www.谷歌.com/m8/feeds'> Contacts </generator>
<openSearch:totalResults>1</openSearch:totalResults>
<openSearch:startIndex>1</openSearch:startIndex>
<openSearch:itemsPerPage>25</openSearch:itemsPerPage>
<entry gd:etag='"Qn04eTVSLyp7ImA9WxRbGEUORAQ."'>
<id> http://www.谷歌.com/m8/feeds/contacts/liz%40gmail.com/base/c9012de </id>
<updated>2008-12-10T04:45:03.331Z</updated>
<app:edited xmlns:app='http://www.w3.org/2007/app'>2008-12-10T04:45:03.331Z</app:edited>
<category scheme='http://schemas.谷歌.com/g/2005#kind' term='http://schemas.谷歌.com/contact/2008#contact' />
<title>Fitzwilliam Darcy</title>
<gd:name>
<gd:fullName>Fitzwilliam Darcy</gd:fullName>
</gd:name>
<link rel='http://schemas.谷歌.com/contacts/2008/rel#photo' type='image/*' href='https://www.谷歌.com/m8/feeds/photos/media/liz%40gmail.com/c9012de' gd:etag='"KTlcZWs1bCp7ImBBPV43VUV4LXEZCXERZAc."' />
<link rel='self' type='application/atom+xml' href='https://www.谷歌.com/m8/feeds/contacts/liz%40gmail.com/full/c9012de' />
<link rel='edit' type='application/atom+xml' href='https://www.谷歌.com/m8/feeds/contacts/liz%40gmail.com/full/c9012de' />
<gd:phoneNumber rel='http://schemas.谷歌.com/g/2005#home' primary='true'> 456 </gd:phoneNumber>
<gd:extendedProperty name='pet' value='hamster' />
<gContact:groupMembershipInfo deleted='false' href='http://www.谷歌.com/m8/feeds/groups/liz%40gmail.com/base/270f' />
</entry>
</feed>

这个布局在下面的地址里有,这个是我格局化过的XML数据,如今要获得相似于“<gd:phoneNumber rel='http://schemas.谷歌.com/g/2005#home' primary='true'> 456 </gd:phoneNumber> ”中的值。

终究代码以下:
复制代码 代码以下:
$x = new SimpleXmlElement($str);
foreach($x->entry as $t){
echo $t->id . "<br >";
echo $t->updated . "<br />";
$namespaces = $t->getNameSpaces(true);
$gd = $t->children($namespaces['gd']);
echo $gd->phoneNumber;
}

固然,假如不象下面如许写,也能够写成如许:
复制代码 代码以下:
$x = new SimpleXmlElement($str);
foreach($x->entry as $t){
echo $t->id . "<br >";
echo $t->updated . "<br />";
//$namespaces = $t->getNameSpaces(true);
//注重这里与下面一段的区分
$gd = $t->children('http://schemas.谷歌.com/g/2005');
echo $gd->phoneNumber;
}

只是象第二种写法就属于硬编码了,如许不太好,万一哪天有变更,还得再更改N多代码。
成绩相继而来,好比象上面这段:
复制代码 代码以下:
<event:event>
<event:sessionKey></event:sessionKey>
<event:sessionName>Learn QB in Minutes</event:sessionName>
<event:sessionType>9</event:sessionType>
<event:hostWebExID></event:hostWebExID>
<event:startDate>02/12/2009</event:startDate>
<event:endDate>02/12/2009</event:endDate>
<event:timeZoneID>11</event:timeZoneID>
<event:duration>30</event:duration>
<event:description></event:description>
<event:status>NOT_INPROGRESS</event:status>
<event:panelists></event:panelists>
<event:listStatus>PUBLIC</event:listStatus>
</event:event>

这类非尺度的XML,没有界说定名空间,怎样办?在这类情形下,其实SimpleXmlElement就已直接可以处理了,然而会报warnging,由于他以为event这个定名空间不存在。
处理办法是:
复制代码 代码以下:
$xml = @new SimpleXmlElement($str);//在后面加@遏止毛病。
echo "<pre>";
print_r($xml);

今朝看来,这类处理办法对照好。

PHP SimpleXML 函数 相干材料
http://www.jb51.net/w3school/php/php_ref_simplexml.htm
PHP SimpleXML
http://www.jb51.net/w3school/php/php_xml_simplexml.htm也或许是因为我还没有真正的学到深处吧,说实在的,PHP中的很多高级点的应用,如PHP类、PHP函数基本还是不懂吧!
若天明 该用户已被删除
沙发
发表于 2015-2-4 05:46:11 | 只看该作者
说点我烦的低级错误吧,曾经有次插入mysql的时间 弄了300年结果老报错,其实mysql的时间是有限制的,大概是到203X年  具体的记不清啦,囧。
若相依 该用户已被删除
板凳
发表于 2015-2-5 08:43:50 | 只看该作者
小鸟是第一次发帖(我习惯潜水的(*^__^*) 嘻嘻……),有错误之处还请大家批评指正,另外,前些日子听人说有高手能用php写驱动程序,真是学无止境,人外有人,天外有天。
飘灵儿 该用户已被删除
地板
发表于 2015-2-11 08:13:46 | 只看该作者
使用zendstdio 写代码的的时候,把tab 的缩进设置成4个空格是很有必要的
透明 该用户已被删除
5#
发表于 2015-2-17 03:52:24 | 只看该作者
,熟悉html,能用div+css,还有javascript,优先考虑linux。我在开始学习的时候,就想把这些知识一起学习,我天真的认为同时学习能够互相呼应,因为知识是相通的。
精灵巫婆 该用户已被删除
6#
发表于 2015-2-27 21:44:59 | 只看该作者
为了以后维护的方便最好是代码上都加上注释,“予人方便,自己方便”。此外开发文档什么的最好都弄齐全。我觉得这是程序员必备的素质。虽然会消耗点很多的时间。但是确实是非常有必要的。
爱飞 该用户已被删除
7#
发表于 2015-3-11 17:14:37 | 只看该作者
对于懒惰的朋友,我推荐php的集成环境xampp或者是wamp。这两个软件安装方便,使用简单。但是我还是强烈建议自己动手搭建开发环境。
分手快乐 该用户已被删除
8#
发表于 2015-3-13 07:06:09 | 只看该作者
使用 jquery 等js框架的时候,要随时注意浏览器的更新情况,不然很容易发生框架不能使用。
莫相离 该用户已被删除
9#
发表于 2015-3-17 09:35:16 | 只看该作者
这些都是最基本最常用功能,我们这些菜鸟在系统学习后,可以先对这些功能深入研究。
只想知道 该用户已被删除
10#
发表于 2015-3-20 23:21:55 | 只看该作者
环境搭建好,当你看见你的浏览器输出“it works\\\\\\\"时你一定是喜悦的。在你解决问题的时候,我强烈建议多读php手册。
逍遥一派 该用户已被删除
11#
 楼主| 发表于 2015-3-21 19:58:19 | 只看该作者
多看优秀程序员编写的代码,仔细理解他们解决问题的方法,对自身有很大的帮助。
灵魂腐蚀 该用户已被删除
12#
发表于 2015-3-30 02:20:11 | 只看该作者
这些都是最基本最常用功能,我们这些菜鸟在系统学习后,可以先对这些功能深入研究。
小魔女 该用户已被删除
13#
发表于 2015-4-9 12:14:35 | 只看该作者
有时候汉字的空格也能导致页面出错,所以在写代码的时候,要输入空格最好用引文模式。
愤怒的大鸟 该用户已被删除
14#
发表于 2015-4-12 18:04:22 | 只看该作者
多看优秀程序员编写的代码,仔细理解他们解决问题的方法,对自身有很大的帮助。
乐观 该用户已被删除
15#
发表于 2015-4-19 19:42:15 | 只看该作者
写js我最烦的就是 ie 和 firefox下同样的代码 结果显示的结果千差万别,还是就是最好不要用遨游去调试,因为有时候遨游是禁用js的,有可能代码是争取结果被遨游折腾的认为是代码写错。
兰色精灵 该用户已被删除
16#
发表于 2015-4-20 20:49:40 | 只看该作者
使用zendstdio 写代码的的时候,把tab 的缩进设置成4个空格是很有必要的
谁可相欹 该用户已被删除
17#
发表于 2015-4-27 17:25:17 | 只看该作者
曾经犯过一个很低级的错误,我在文件命名的时候用了一个横线\\\\\\\'-\\\\\\\' 号,结果找了好几个小时的错误,事实是命名的时候 是不能用横线 \\\\\\\'-\\\\\\\' 的,应该用的是下划线  \\\\\\\'_\\\\\\\' ;
第二个灵魂 该用户已被删除
18#
发表于 2015-4-29 14:29:41 | 只看该作者
有位前辈曾经跟我说过,phper 至少要掌握200个函数 编起程序来才能顺畅点,那些不熟悉的函数记不住也要一拿手册就能找到。所以建议新手们没事就看看php的手册(至少array函数和string函数是要记牢的)。
蒙在股里 该用户已被删除
19#
发表于 2015-5-1 00:55:15 | 只看该作者
Apache不是非得用80或者8080端口的,我刚开始安得时候就是80端口老占用,就用了个 81端口,结果照常,就是输localhost的时候,应该输入为 localhost:81
冷月葬花魂 该用户已被删除
20#
发表于 2015-6-7 18:11:44 | 只看该作者
建数据库表的时候,int型要输入长度的,其实是个摆设的输入几位都没影响的,只要大于4就行,囧。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-12-23 13:07

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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