PHP读取XML文件的方法实例总结【DOMDocument及simplexml方法】

来源:脚本之家  责任编辑:小易  

要new一下simpleXMl 然后里面的操作和JS的dom很像

本文实例讲述了PHP读取XML文件的方法。分享给大家供大家参考,具体如下:

进入php源程序目录中的ext目录中,这里存放着各个扩展模块的源代码,选择你需要的模块,比如curl模块:cd curl 执行phpize生成编译文件,phpize在PHP安装目录的bin目录下 /usr/local/php5/bin/phpize 运行时,可能会报错:Cannot find autoconf.

使用DOMDocument对象读取xml

改成这样你就可以使用$_FILE 读取文件了

创建一个DOMDocument对象

$class_name默认是SimpleXMLElement 是一个对象名,也可以自定义,但是必须是自定义的类必须是SimpleXMLElement的子类,也就是继承! simplexml_load_string是把结果存于该对象,并把该对象放回 例子: class a{ public $aa;}function b($c,$d='

$doc = new DOMDocument();

可以解析,如下: http://hi.baidu.com/yinqinlong502/item/e4dfc900a977ed1acc34eae9 php 解析xml遇到cdata怎么办 用$rss = simplexml_load_file ( '11111.xml', 'SimpleXMLElement', LIBXML_NOCDATA );哎就为了这么个函数我还去写正则准备替换

载入xml文件

感谢邀请!这问题要从两方面来回答。如果是要换机相,建议可以考虑6D2和5D4,毕竟,60D是残幅机,你的这几个镜头,都是EF卡口的镜头,虽然能用在60D上,但毕竟要乘1.6的倍率。如果还是喜欢残幅机,可以考虑80D,也是不错的。其实60D虽然老了些,虽说使用的是佳能祖传的1800COMS,但也还是一款很不错的相机,可能考虑用来拍延时和大范围延时,足够用了。如果要换镜头的话,个人建议可以上几个定焦,50定,85定,或者百微,都是不错的,这样焦段也就差不多补齐了。个人建议,谨供参考

$doc->load("book.xml");

男人要多吃枸杞六大功效不容忽视1、可以壮阳,很多男人都是通过枸杞子来壮阳的,并且枸杞子的壮阳功能会常常的让你喜出望外的。2、肾虚的人可以经常的使用,对于精子质量不好的男人,也可以经常的吃一些。因为枸杞子就是一个宝贝,是可以补虚生精的,如果能经常的饮用,则就可以强身健体。3、延缓衰老,其实枸杞子自古以来就是一个很好的营养物质,并且还是具有抗衰老的现象的,在枸杞子中的营养是比较高的,对于人类有很大的益处,总起来说,枸杞子的作用与功效是相当大的.4、抗癌的作用,枸杞子其实对于一些癌症细胞是有抑制作用的,并且也可以很好的去防止抗癌细胞的扩散,也可以更好的去增强人体的免疫功能的。5、对于女人来说,是可以

获取标签对象

人体的基本身体素质包括五方面:速度、力量、耐力、灵敏、柔韧。其实大部分体育运动项目都综合考验了运动员的五项基本身体素质,只不过考查侧重点有些不同。橄榄球、篮球、足球对运动员身体综合素质的考验比较高,但考虑到集体项目可以依靠配合取长补短,由于分工和位置不同,允许“某项身体素质突出、但另几项身体素质较差”的运动员存在,比如篮球场上的中锋:速度可以稍微慢点。所以我认为最考验运动员五项身体综合素质的项目应该是个人项目。个人认为网球运动最考验运动员的身体综合素质,对五项基本素质的要求都在比较高的门槛之上。1速度:网球场很大,运动员如果没有相当的移动速度是完全无法回球的。2力量:网球发球和回球对力量要求很

$books = $doc->getElementsByTagName("book");

我觉得夏窗最佳转会应该是卢卡库和莫拉塔吧卢卡库的转会费是8470万欧元,在整个转会窗排行第三,而同岁的莫拉塔转会费是6500万欧元。虽然夏天关于卢卡库和莫拉塔的传闻有很多,而且我还一度认为卢卡库会回切尔西,莫拉塔来曼联,但是最后两人却交换了东家。但是就目前的情况下,两人的表现还比较优秀。截止到目前,英超共进行了三轮联赛,卢卡库3球0助攻,莫拉塔2球2助攻,作为两队的主力中锋,目前两人交给球队的答卷都还不错,从未打过英超的莫拉塔,在热身赛明显不适应的他,最近状态上佳。当然比赛中仍旧能够看出他与队友的默契度还不够高,不过在扎球王缺战后,小法还是站了出来,串联整支球队并输送给莫拉塔助攻。莫拉塔一米九

获取标签的子对象

$titles = $book->getElementsByTagName("title");

获取标签的值或属性

$title = $titles->item(0)->nodeValue;

实例1,获取图书列表

book.xml

<?xml version="1.0" encoding="UTF-8"?> <bookstore> <book> <title>PHP和MySQL开发</title> <author>谭浩强</author> </book> <book> <titile>xml从入门到精通</titile> <author>郑智化</author> </book> </bookstore>

load.php

<?php header("Content-type:text/html;charset=utf8"); $doc = new DOMDocument(); //创建DOMDocument对象 $doc->load("book.xml"); //打开book.xml $books = $doc->getElementsByTagName("book"); //获取book标签对象 foreach ($books as $book){ //遍历对象 $titles = $book->getElementsByTagName("title"); //获取book标签下的title标签 $title = $titles->item(0)->nodeValue; //获取标签的值 $authors = $book->getElementsByTagName("author");//获取book标签下的author标签 $author = $authors->item(0)->nodeValue; //获取标签的值 $item["title"] = $title; $item["author"] = $author; $bookinfo[] = $item; } var_dump($bookinfo);

实例2,读取配置文件

config.xml

<?xml version="1.0" encoding="UTF-8"?> <mysql> <host>127.0.0.1</host> <username>root</username> <password></password> <database>test</database> </mysql>

config.php

<?php header("Content-type:text/html;charset=utf8"); $doc = new DOMDocument(); //创建DOMDocument对象 $doc->load("config.xml"); //打开config.xml $mysql = $doc->getElementsByTagName("mysql"); //获取mysql标签对象 $host = $mysql->item(0)->getElementsByTagName("host"); $config["host"] = $host->item(0)->nodeValue; $username = $mysql->item(0)->getElementsByTagName("username"); $config["username"] = $username->item(0)->nodeValue; $password = $mysql->item(0)->getElementsByTagName("password"); $config["password"] = $password->item(0)->nodeValue; $database = $mysql->item(0)->getElementsByTagName("database"); $config["database"] = $database->item(0)->nodeValue; var_dump($config);

使用simplexml方法读取xml

实例1,获取图书列表

load.php

<?php header("Content-type:text/html;charset=utf8"); $books = simplexml_load_file("book.xml"); foreach($books as $book){ $item["title"] = $book->title; $item["author"] = $book->author; $booklist[] = $item; } var_dump($booklist);

实例2,读取配置文件

config.php

<?php header("Content-type:text/html;charset=utf8"); $mysql = simplexml_load_file("config.xml"); $config['host'] = $mysql->host; $config['username'] = $mysql->username; $config['password'] = $mysql->password; $config['databse'] = $mysql->database; var_dump($config);

PS:这里再为大家提供几款关于xml操作的在线工具供大家参考使用:

在线XML/JSON互相转换工具:

http://tools.jb51.net/code/xmljson

在线格式化XML/在线压缩XML

http://tools.jb51.net/code/xmlformat

XML在线压缩/格式化工具:

http://tools.jb51.net/code/xml_format_compress

XML代码在线格式化美化工具:

http://tools.jb51.net/code/xmlcodeformat

更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP针对XML文件操作技巧总结》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

希望本文所述对大家PHP程序设计有所帮助。

扩展阅读,根据您访问的内容系统为您准备了以下内容,希望对您有帮助。

php处理xml数据文件,如何处理效率较高?以下:xpath,xquery,simplexml_load_xxx,手动解析.求理由,求答案!

PHP中3种生成XML文件方法的速度比较

有3种方法,分别是直接写;使用DomDocument;使用SimpleXML;

其实还有第4种:使用XMLWriter,不过我没用过,也懒得试了.

主要是想看看这3种方式哪个速度要快些

直接上代码:

复制代码代码如下:

private function directWriteXml(&$data){

$xmltext='<?xml version="1.0" encoding="UTF-8" ?>';

$xmltext .='<DocumentData>';

$xmltext .='<Detail>';

$loop=count($data);

foreach ($data as $d){

$xmltext .=" <Row ID=\" {$d['id']} \" Name=\" {$d['name']}\" />";

}

$xmltext .='</Detail>';

$xmltext .='</DocumentData>';

return $xmltext;

}

private function useDomDocument(&$data){

// 创建一个XML文档并设置XML版本和编码。。

$dom=new DomDocument('1.0', 'utf-8');

// 创建根节点

$detail01 = $dom->createElement('Detail');

$dom->appendchild($detail01);

foreach ($data as $d) {

$row = $dom->createElement('Row'," ID=\" {$d['id']} \" Name=\" {$d['name']}\" " );

$detail01->appendchild($row);

}

return $dom->saveXML();

}

private function useSimpleXML(&$data){

// 创建一个XML文档并设置XML版本和编码。。

$string = <<<XML

<?xml version='1.0' encoding='utf-8'?>

<detail01>

</detail01>

XML;

$xml = simplexml_load_string($string);

foreach ($data as $d) {

$xml->addChild('Row'," ID=\" {$d['id']} \" Name=\" {$d['name']}\" " );

}

return $xml->asXML(); ;

}

调用时每个都加上大数循环操作,并记录时间

复制代码代码如下:

$loop=10000;

$xml='';

switch($_GET['id']){

case 1:

$ts=$this->microtime_float();

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

$xml=$this->directWriteXml($depdata);

$te=$this->microtime_float();

$t=$te-$ts;

$this->assign('times',$t);

$this->assign('method','直接写');

break;

case 2:

$ts=$this->microtime_float();

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

$xml=$this->useDomDocument($depdata);

$te=$this->microtime_float();

$t=$te-$ts;

$this->assign('times',$t);

$this->assign('method','DomDocument');

break;

case 3:

$ts=$this->microtime_float();

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

$xml=$this->useSimpleXML($depdata);

$te=$this->microtime_float();

$t=$te-$ts;

$this->assign('times',$t);

$this->assign('method','SimpleXML');

break;

}

echo $xml;

实测结果不出所料,直接写最快,耗时只有其他方式的1/3左右. 而其他2种方法差不多,相比之下SimpleXML要快一些.

php中simplexml_load_string() 与 DOMdocument::loadXML() 这两个函数有什么区别?

一个是函数,一个是DOMdocument类中的静态方法,都是处理XM L的,这和‘GET,POST’都能传值一样

DOMDocument 和 simplexml_load_file 哪个更快一些 - PHP进阶讨论

看你用在什么地方,大型的XML解析,就用DOMDocument ,小型的XML文件,小用simplexml_load_file我通常用simplexml_load_file解析,用DOMDocument 来创建.... 主要是我的XML都很小

php将XML转换成字符串!

php处理xml 百度 这些东西 就不给你复制粘贴了

Xml parser, SimpleXML, XMLReader, DOMDocument

PHP中用simpleXML解析XML文档,为什么总出错?

你说的“而且单个测试都没问题”只是抽样测试,并不是测试全部。应该有至少一个XML格式是不正确的。如果你加了我的代码,应该会输出这个不正确的XML的内容。你把这个内容贴出来给你看看,没有什么机密吧?如果可以的话,加百度HI。账号:everalan

你加我的代码后,有执行到die($xml)这一行吗?有的话把输出的XML内容发过来帮你分析一下

应该是XML本身的格式就不正确,自然解析失败

try{

$xmld = new SimpleXMLElement($xml);

}catch(Exception $e){

die($xml);

}

这样出错的时候就能知道那个XML是什么内容就知道哪里错了

  • 本文相关:
  • php读取xml值的代码(推荐)
  • 用php编写和读取xml的几种方式
  • php中使用xmlreader读取xml数据示例
  • php读取xml格式文件的方法总结
  • dom基础及php读取xml内容操作的方法
  • php通过正则表达式记取数据来读取xml的方法
  • php中使用dom类读取xml文件的实现代码
  • php读取xml的常见方法实例总结
  • php简单读取xml文件的方法示例
  • php使用dom和simplexml读取xml文档的方法示例
  • thinkphp 字母函数详解t/i/n/d/m/a/r/u
  • 基于php iconv函数的使用详解
  • php 常用函数库和一些实用小技巧
  • php获取服务器端mac和客户端mac的地址支持win/linux
  • php源代码数组统计count分析
  • 解析php中数组元素升序、降序以及重新排序的函数
  • php生成不重复标识符的方法
  • php常用技巧总结(附函数代码)
  • php的preg_match匹配字符串长度问题解决方法
  • php与sql注入攻击[一]
  • php处理xml数据文件,如何处理效率较高?以下:xpath,...
  • php中simplexml_load_string() 与 DOMdocument::lo...
  • DOMDocument 和 simplexml_load_file 哪个更快一些...
  • php将XML转换成字符串!
  • PHP中用simpleXML解析XML文档,为什么总出错?
  • 关于php中的SimpleXMLElement对象问题
  • PHP怎样读SimpleXMLElement Object
  • php simplexml_load_file: I/O warning failed to ...
  • php的simplexml_load_string函数的几个参数解析,求...
  • PHP SimpleXML怎么创建cdata
  • 免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved