本文实例讲述了php读取XML的常见方法。分享给大家供大家参考,具体如下:
xml源文件
1
2
3
4
5
6
7
8
9
10
11
12
13
|
<? xml version = "1.0 encoding=" UTF-8"?>
< humans >
< zhangying >
< name >张映</ name >
< sex >男</ sex >
< old >28</ old >
</ zhangying >
< tank >
< name >tank</ name >
< sex >男</ sex >
< old >28</ old >
</ tank >
</ humans >
|
1)DOMDocument读取xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
<?php
$doc = new DOMDocument();
$doc ->load( 'person.xml' ); //读取xml文件
$humans = $doc ->getElementsByTagName( "humans" ); //取得humans标签的对象数组
foreach ( $humans as $human )
{
$names = $human ->getElementsByTagName( "name" ); //取得name的标签的对象数组
$name = $names ->item(0)->nodeValue; //取得node中的值,如<name> </name>
$sexs = $human ->getElementsByTagName( "sex" );
$sex = $sexs ->item(0)->nodeValue;
$olds = $human ->getElementsByTagName( "old" );
$old = $olds ->item(0)->nodeValue;
echo "$name - $sex - $old\n" ;
}
?>
|
2)simplexml读取xml
1
2
3
4
5
6
|
<?php
$xml_array =simplexml_load_file( 'person.xml' ); //将XML中的数据,读取到数组对象中
foreach ( $xml_array as $tmp ){
echo $tmp ->name. "-" . $tmp ->sex. "-" . $tmp ->old. "<br>" ;
}
?>
|
3)用php正则表达式来读取数据
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
<?php
$xml = "" ;
$f = fopen ( 'person.xml' , 'r' );
while ( $data = fread ( $f , 4096 ) ) {
$xml .= $data ;
}
fclose( $f );
// 上面读取数据
preg_match_all( "/\<humans\>(.*?)\<\/humans\>/s" , $xml , $humans ); //匹配最外层标签里面的内容
foreach ( $humans [1] as $k => $human )
{
preg_match_all( "/\<name\>(.*?)\<\/name\>/" , $human , $name ); //匹配出名字
preg_match_all( "/\<sex\>(.*?)\<\/sex\>/" , $human , $sex ); //匹配出性别
preg_match_all( "/\<old\>(.*?)\<\/old\>/" , $human , $old ); //匹配出年龄
}
foreach ( $name [1] as $key => $val ){
echo $val . " - " . $sex [ $key ][1]. " - " . $old [ $key ][1]. "<br>" ;
}
?>
|
4)xmlreader来读取xml数据
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
<?php
$reader = new XMLReader();
$reader ->open( 'person.xml' ); //读取xml数据
$i =1;
while ( $reader ->read()) { //是否读取
if ( $reader ->nodeType == XMLReader::TEXT) { //判断node类型
if ( $i %3) {
echo $reader ->value; //取得node的值
} else {
echo $reader ->value. "<br>" ;
}
$i ++;
}
}
?>
|
希望本文所述对大家PHP程序设计有所帮助。