本文以实例形式详细讲述了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程序设计有所帮助。