PHP读取XML值的代码(推荐)
2015-01-24信息快讯网
PHP读取XML值的代码,网上很多是pdf版的,变向的赚积分,脚本特为大家搜索整理。希望大家以后多多的支持我们。
用Php读取XML最简单的情况:XML文件(cy.xml)如下:
<?xml version=”1.0″ encoding=”gb2312″?> <xml> <list>1</list> <list>2</list> <list>3</list> </xml>
Php文件(cy.php)如下:
<?php $xml = new DOMDocument(); $xml->load('cy.xml'); foreach($xml->getElementsByTagName('list') as $list) { $value = $list->firstChild->nodeValue; echo $value.”<br />”; } ?>
cy.php的运行结果:
1
2
3
=============
用Php读取XML稍微复杂一点的情况:
cy.xml如下:
<?xml version=”1.0″ encoding=”gb2312″?> <xml> <main> <list>1</list> <list>2</list> <list>3</list> </main> </xml>
cy.php如下(和第一种情况没有任何变化):
<?php $xml = new DOMDocument(); $xml->load('cy.xml'); foreach($xml->getElementsByTagName('list') as $list) { $value = $list->firstChild->nodeValue; echo $value.”<br />”; } ?>
cy.php的运行结果和第一次也相同:
1
2
3
Php读取XML第三种情况:
XML文件(cy.xml)如下:
<?xml version=”1.0″ encoding=”gb2312″?> <xml> <main> <list>1</list> <list>2</list> <list>3</list> </main> <main> <list>4</list> <list>5</list> <list>6</list> </main> </xml>
Php文件(cy.php)如下(和第一次依然没有变化):
<?php $xml = new DOMDocument(); $xml->load('cy.xml'); foreach($xml->getElementsByTagName('list') as $list) { $value = $list->firstChild->nodeValue; echo $value.”<br />”; } ?>
cy.php的输出结果:
1
2
3
4
5
6
===========
Php读取XML第四种情况,保持cy.xml不变,改变cy.php:
XML文件(cy.xml)如下:
<?xml version=”1.0″ encoding=”gb2312″?> <xml> <main> <list>1</list> <list>2</list> <list>3</list> </main> <main> <list>4</list> <list>5</list> <list>6</list> </main> </xml>
Php文件(cy.php)如下:
<?php $xml = new DOMDocument(); $xml->load('cy.xml'); $main = $xml->getElementsByTagName('main'); foreach( $main as $main) { $list = $main->getElementsByTagName( “list” ); foreach ( $list as $list ) { $value = $list->firstChild->nodeValue; echo $value.”<br />”; } } ?>
cy.php输出结果:
1
2
3
4
5
6
为什么两次的cy.php不同,但输出结果是相同的?让我们来看下一个例子
==============
Php读取XML第五种情况,改变cy.xml,使cy.php保持第四种情况:
XML文件(cy.xml)如下:
<?xml version=”1.0″ encoding=”gb2312″?> <xml> <main> <list>1</list> <list>2</list> <list>3</list> </main> <main> <list>4</list> <list>5</list> <list>6</list> </main> <m> <list>7</list> <list>8</list> <list>9</list> </m> </xml>
Php文件(cy.php)和第四种情况相同:
<?php $xml = new DOMDocument(); $xml->load('cy.xml'); $main = $xml->getElementsByTagName('main'); foreach( $main as $main) { $list = $main->getElementsByTagName( “list” ); foreach ( $list as $list ) { $value = $list->firstChild->nodeValue; echo $value.”<br />”; } } ?>
cy.php输出结果为:
1
2
3
4
5
6
为什么
<m>
<list>7</list>
<list>8</list>
<list>9</list>
</m>
中的7,8,9没有被读出来?
因为我们的cy.php只读取<main></main>标记中的内容.<m></m>标记中的内容是不会被读取的.
我们这里所提到的”标记”,在XML里被称做”节点”;
关于”节点”的相关概念,我们将在以后说明.
Php读取XML情况六,再foreach一次,我们把7,8,9读出来!:
XML文件(cy.xm)如下:
<?xml version=”1.0″ encoding=”gb2312″?> <xml> <main> <list>1</list> <list>2</list> <list>3</list> </main> <main> <list>4</list> <list>5</list> <list>6</list> </main> <m> <list>7</list> <list>8</list> <list>9</list> </m> </xml>
Php文件(cy.php)如下:
<?php $xml = new DOMDocument(); $xml->load('cy.xml'); $main = $xml->getElementsByTagName('main'); foreach( $main as $main) { $list = $main->getElementsByTagName( “list” ); foreach ( $list as $list ) { $value = $list->firstChild->nodeValue; echo $value.”<br />”; } } $m = $xml->getElementsByTagName('m'); foreach( $m as $m) { $list = $m->getElementsByTagName( “list” ); foreach ( $list as $list ) { $value = $list->firstChild->nodeValue; echo $value.”<br />”; } } ?>
cy.php输出结果:
1
2
3
4
5
6
7
8
9
===============
Php读取XML情况七,cy.xml变得更复杂一些:
XML文件(cy.xml)如下:
<?xml version=”1.0″ encoding=”gb2312″?> <xml> <main> <title>a</title> <list>1</list> <list>2</list> <list>3</list> </main> <main> <title>b</title> <list>4</list> <list>5</list> <list>6</list> </main> <m> <title>c</title> <list>7</list> <list>8</list> <list>9</list> </m> </xml>
那么,我们如何只读出<main></main>内<title></title>中的值呢?
Php文件(cy.php)如下:
<?php $xml = new DOMDocument(); $xml->load('cy.xml'); $main = $xml->getElementsByTagName('main'); foreach( $main as $main) { $list = $main->getElementsByTagName( “list” ); foreach ( $list as $list ) { $value = $list->firstChild->nodeValue; echo $value.”<br />”; } $title = $main->getElementsByTagName( “title” ); foreach ( $title as $title ) { $value = $title->firstChild->nodeValue; echo $value.”<br />”; } } $m = $xml->getElementsByTagName('m'); foreach( $m as $m) { $list = $m->getElementsByTagName( “list” ); foreach ( $list as $list ) { $value = $list->firstChild->nodeValue; echo $value.”<br />”; } } ?>
cy.php输出结果:
1
2
3
a
4
5
6
7
8
9
想一下,如何读出<m>中<title></title>的值?
Php读取XML再通过一个例子巩固一下:
XML文件(cy.xml)如下:
<?xml version=”1.0″ encoding=”gb2312″?> <LevelOne> <LevelTwo> <LevelThree id=”1″>This is Text One</LevelThree> <LevelThree id=”2″>This is Text Two</LevelThree> <LevelThree id=”3″>This is Text Three</LevelThree> </LevelTwo> <LevelTwo> <LevelThree id=”4″>This is Text Four</LevelThree> <LevelThree id=”5″>This is Text Five</LevelThree> <LevelThree id=”6″>This is Text Six</LevelThree> </LevelTwo> </LevelOne>
Php文件(cy.php)如下:
<?php $xml = new DOMDocument(); //建立一个DOMDocument $xml->load('cy.xml'); //Php指定需要读取xml文件的位置 $LevelOne = $xml->getElementsByTagName('LevelOne');//按照名称取得节点,返回所有节点的集合,不过这里这样读LevelOne是没有意义的…. $LevelOne = $xml->getElementsByTagName('LevelOne')->item(0);//返回第一个LevelOne节点中的内容 $LevelTwo = $LevelOne->getElementsByTagName('LevelTwo'); //按照名称取得节点,返回所有LevelTwo foreach ( $LevelTwo as $Content )//循环读出所有LevelTwo,并在循环里,把LevelTwo用Content表示 { $LevelThree = $Content->getElementsByTagName('LevelThree');//返回所有LevelThree foreach ( $LevelThree as $Concert ) { $name = $Concert->nodeName;//节点名称 $value = $Concert->nodeValue;//节点值 $id = $Concert->getAttribute('id');//”id”属性值 echo $name.”<br />”; echo $value.”<br />”; echo $id.”<br />”; } } ?>
如果用$LevelOne = $xml->getElementsByTagName('LevelOne')这样的方式取得节点,那么,读取里面的内容,需要用foreach 循环,因为$LevelOne = $xml->getElementsByTagName ('LevelOne')返回的,是一个集合,并不是一个具体的节点―-仅管叫做LevelOne的节点只有一个….
如果用$LevelOne = $xml->getElementsByTagName('LevelOne')->item(0)这样的方式取得节点,那么读取里面的内 容,可以直接$LevelOne->xxxxxx,因为这样返回的是一个具体的节点。
现在提供一种很简便的方法用PHP读取XML:
XML文件(cy.xml)如下:
<?xml version=”1.0″ encoding=”gb2312″?> <xml> <site> <part id=”1″> <title id=”a”>czbin xml版块</title> <describe>xml的相关文章</describe> </part> <part id=”2″> <title id=”b”>czbin php版块</title> <describe>php的相关文章</describe> </part> <part id=”3″> <title id=”c”>czbin ajax版块</title> <describe>ajax的相关文章</describe> </part> </site> </xml>
Php文件(cy.php)如下:
<?php $xml = simplexml_load_file('sxml.xml'); $part = $xml->site->part; foreach ( $part as $content ) { echo $content['id'].”<br />”; echo $content->title.”<br />”; echo $content->title['id'].”<br />”; echo $content->describe.”<br />”; } ?>
cy.php输出结果:
1
czbin xml版块
a
xml的相关文章
2
czbin php版块
php的相关文章
3
czbin ajax版块
c
ajax的相关文章
怎么样?的确很简单吧!
iis下php mail函数的sendmail配置方法(官方推荐)
php判断变量类型常用方法
介绍一些PHP判断变量的函数
PHP的几个常用数字判断函数代码
php中邮箱地址正则表达式实现与详解
用PHP读取超大文件的实例代码
php 文本文件的读取效率
php读取mysql乱码,用set names XXX解决的原理分享
php中使用DOM类读取XML文件的实现代码
PHPExcel读取Excel文件的实现代码
php中XMLHttpRequest(Ajax)不能设置自定义的Referer的解决方法
php XMLWriter类的简单示例代码(RSS输出)
PHP用SAX解析XML的实现代码与问题分析
PHP中将数组转成XML格式的实现代码
php下尝试使用GraphicsMagick的缩略图功能
PHP中simplexml_load_string函数使用说明
php xml 入门学习资料
PHP+SQL 注入攻击的技术实现以及预防办法
解决PHP在DOS命令行下却无法链接MySQL的技术笔记
window+nginx+php环境配置 附配置搭配说明
PHP操作XML作为数据库的类
php中DOMDocument简单用法示例代码(XML创建、添加、删除、修改)
用PHP将数据导入到Foxmail的实现代码
生成ubuntu自动切换壁纸xml文件的php代码
php access 数据连接与读取保存编辑数据的实现代码
php读取javascript设置的cookies的代码
Ext.data.PagingMemoryProxy分页一次性读取数据的实现代码
用PHP实现读取和编写XML DOM代码
php 读取shell管道传输过来的内容