本文以实例形式详细讲述了php解析xml方法。分享给大家供大家参考。具体分析如下:
books.xml文件如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
<? xml version = "1.0" encoding = "ISO-8859-1" ?>
< bookstore >
< book category = "children" >
< title lang = "en" >Harry Potter</ title >
< author >J K. Rowling</ author >
< year >2005</ year >
< price >29.99</ price >
</ book >
< book category = "cooking" >
< title lang = "en" >Everyday Italian</ title >
< author >Giada De Laurentiis</ author >
< year >2005</ year >
< price >30.00</ price >
</ book >
< book category = "web" cover = "paperback" >
< title lang = "en" >Learning XML</ title >
< author >Erik T. Ray</ author >
< year >2003</ year >
< price >39.95</ price >
</ book >
</ bookstore >
|
1、DOM解析XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
<?php
//创建一个DOMDocument对象
$doc = new DOMDocument();
//加载XML文件
$doc ->load( "books.xml" );
//获取所有的book标签
$bookDom = $doc ->getElementsByTagName( "book" );
foreach ( $bookDom as $book ){
$title = $book ->getElementsByTagName( "title" )->item(0)->nodeValue;
$author = $book ->getElementsByTagName( "author" )->item(0)->nodeValue;
$year = $book ->getElementsByTagName( "year" )->item(0)->nodeValue;
$price = $book ->getElementsByTagName( "price" )->item(0)->nodeValue;
echo "title:" . $title . "<br>" ;
echo "author:" . $author . "<br>" ;
echo "year:" . $year . "<br>" ;
echo "price:" . $price . "<br>" ;
echo "***********************************<br>" ;
}
?>
|
2、xml_parse_into_struct
创建解析器,将xml数据解析到数组,释放解析器,再有就是从数组中提取想要的值。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
<?php
// 读取xml文件
$file = "books.xml" ;
$data = file_get_contents ( $file );
// 创建解析器
$parser = xml_parser_create();
// 将 XML 数据解析到数组中
xml_parse_into_struct( $parser , $data , $vals , $index );
// 释放解析器
xml_parser_free( $parser );
// 数组处理
$arr = array ();
$t =0;
foreach ( $vals as $value ) {
$type = $value [ 'type' ];
$tag = $value [ 'tag' ];
$level = $value [ 'level' ];
$attributes = isset( $value [ 'attributes' ])? $value [ 'attributes' ]: "" ;
$val = isset( $value [ 'value' ])? $value [ 'value' ]: "" ;
switch ( $type ) {
case 'open' :
if ( $attributes != "" || $val != "" ) {
$arr [ $t ][ 'tag' ] = $tag ;
$arr [ $t ][ 'attributes' ] = $attributes ;
$arr [ $t ][ 'level' ] = $level ;
$t ++;
}
break ;
case "complete" :
if ( $attributes != "" || $val != "" ) {
$arr [ $t ][ 'tag' ] = $tag ;
$arr [ $t ][ 'attributes' ] = $attributes ;
$arr [ $t ][ 'val' ] = $val ;
$arr [ $t ][ 'level' ] = $level ;
$t ++;
}
break ;
}
}
echo "<pre>" ;
print_r( $arr );
echo "</pre>" ;
?>
|
3、用 SAX 解析器读取 XML-----XML Simple API(SAX)解析器
1
2
3
4
5
6
7
|
<?php
$file = "books.xml" ;
$xml = simplexml_load_file( $file );
echo "<pre>" ;
print_r( $xml );
echo "</pre>" ;
?>
|
希望本文所述对大家的php程序设计有所帮助。