关于php自带的访问服务器xml的方法的坑
就据我了解,php中有两种读取读取xml文件的方法,我就简单介绍一下,
一种是使用simplexml_load_file($src)读取xml文件。simplexml_load_file会把该函数参数里面的文件路径加载进来,并赋值给一个变量,以对象的形式。
第二种是创建一个dom对象,$xmlDoc = new DOMDocument();调用该对象的load方法把xml文件加载进来,然后使用一个循环去遍历该子树得到他子树的值。
在本地使用,加载本地文件本来应该也没什么问题了,但是如果你是在自己的服务器上使用这两个方法加载别的服务器传来的xml,那你就很可能出bug了,用这两个方法会莫名其妙有时候加载不到xml文件,就像参数不存在一样,我试过一直得到结果一直为空的情况,也有试过刷新5次页面,第5次就有结果的情况,但是这么奇异的现象,只要把服务器一重启,都能加载,但是过了一段时间,又间接性不能加载,到完全无法加载。这其中的原因让我百思不得其解,我甚至试过加一个while循环,把得到的结果用empty函数去判断,如果是true就重新加载,还是不行。。。最后发现如果使用file_get_contents函数就没问题,这种奇怪的现象有人能解释吗?反正我以后打死也不会用simplexml_load_file()和DOMDocument()
现在总算找到个正确php获取远程获取xml数据的方式,首先是用$content = file_get_contents($src)获取,然后是$content1 = simplexml_load_string($content);获取xml文件,而不要一步到位直接用simplexml_load_file,这样很可能获取不到数据
关于php自带的访问服务器xml的方法的坑的更多相关文章
- C# 解析带前缀的Xml节点内容
一般的xml文件相信大家都会解析了,但是遇到有命名空间的带前缀的xml,对于新手可能会有点问题.我这里在论坛解答的时候就遇到过一题,见怎么获取XML节点里面的内容,在线求教.这里给大家演示一下. 他的 ...
- C#读取带命名空间的xml,xaml文件的解决方案
使用C#读取xml文件有三种常用的方式: 1.xmlDocument 2.XmlTextReader 3.Linq To Xml 但是这些方式在读写有些带命名空间的xml时就不知道怎么办了(例如把xa ...
- 由“Jasperrpeorts 4.1.2升级到5.1.2对flex项目的解析”到AS3 带命名空间的XML的操作
原文同步至:http://www.waylau.com/from-jasperrpeorts-4-1-2-upgraded-to-5-1-2-parsing-of-flex-projects-to-t ...
- XML系列之--Linq操作带属性的XML(四)
关于XML,之前解析过电文收发方面的,就是所谓的带表头.前缀(命名空间)SOAP格式.这次需求是解析一个xml的模板(xls内容),然后填充数据,最后保存.需要时可转换xls.pdf等文件.关于这种带 ...
- 带命名空间的XML的dom4j应用<转>
Element root = document.getRootElement(); List recordenvlist = document.selectNodes("//gm ...
- 使用boost::property_tree生成带attribute的xml
曾经写过一篇"使用Boost property tree来解析带attribute的xml", 但是还有姐妹篇一直没贴.看看前一篇贴了都快都快3年了,时间过的真快. 这一小篇就算是 ...
- 【精】搭建redis cluster集群,JedisCluster带密码访问【解决当中各种坑】!
转: [精]搭建redis cluster集群,JedisCluster带密码访问[解决当中各种坑]! 2017年05月09日 00:13:18 冉椿林博客 阅读数:18208 版权声明:本文为博主 ...
- SpringMVC和Freemarker整合,带自定义标签的使用方法
SpringMVC和Freemarker整合,带自定义标签的使用方法. [参考来源:http://www.360doc.com/content/14/1225/14/1007797_435663342 ...
- JAVA常用的XML解析方法
转并总结自(java xml) JAVA常用的解析xml的方法有四种,分别是DOM,JAX,JDOM,DOM4j xml文件 <?xml version="1.0" enco ...
随机推荐
- iOS开发之聊天模块--内容保存逻辑实现
需求详解: 在实际开发中,有可能是在后期优化的时候,会有这么需要优化的需求:聊天输入框保存之前输入的文本,提高用户的良好体验. 在聊天模块中,用户可能会在输入框输入若干字符,但是没有点击发送就点击退出 ...
- Android 四大组件之Activity(续2)
1.生命周期 关于生命周期,在详细讲解下: 上图是从android官网获取的生命周期. 正常的流程,很多文章都讨论过了,我们讨论几个特殊的情况. 1)OnResume->OnPause-> ...
- JDBC Driver Types
JDBC Driver Types Type1: JDBC-ODBC Bridge Driver Type2: JDBC-Native API Type3: JDBC-Net Pure Java Ty ...
- 如何查看MapReduce执行的程序中的输出日志
我们开发程序的时候,好多人都喜欢用sysout输出内容来查看运行情况.但是在MR程序里写了之后,却不知道去哪里查找,可以参考这篇文章. 第一种方法,我们可以在MapReduce任务查看页面找到这些日志 ...
- MySQL初始化的正确姿势
1. 背景 mysql安装教程很多,但是有不少讲得过于简单,没有考虑到安全问题.比如说,一些教程里,只设置一个root用户,并且对外网公开,一来容易被破解密码(用户名固定,破解难度自然降了一大截,而且 ...
- 设计模式C#实现(十五)——命令模式
意图 0 适用性 1 结构 2 实现 3 效果 4 参考 5 意图 将请求封装成一个对象,客户接受请求参数:可以对请求排队或者记录请求日志,以及可以支持撤销操作 适用性 抽象出待执行的动作以参数化某对 ...
- swift判断是否真机or模拟器
之前一直用的这种,不知道为什么不怎么靠谱 #if TARGET_IPHONE_SIMULATOR//模拟器 #else//真机 #endif 现在用这种: if Platform.isSimulato ...
- Elasticsearch配置文件说明
一.Cluster setting Cluster indices.ttl.interval 允许设置多久过期的文件会被自动删除.默认值是60秒. indices.cache.filter.siz ...
- 修改AndroidStudio中的Logcat中的默认设置
按Ctrl+Alt+S打开Settings 在左上角的输入框中输入Locat 点右边的使用内部样式取消掉,好了,开始自定义吧.
- 乌版图 read-only file system
今天在启动虚拟机的时候,运行命令svn up的时候,提示lock,并且read-only file system,这个....我是小白啊,怎么办?前辈在专心写代码,不好打扰,果断找度娘啊 于是乎,折腾 ...