本文实例讲述了php实现的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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
|
<?php /* 使用方法: $test=new xml(); $test->new_xml('test.xml'); $test->root('document'); $test->append_root_node('book'); $test->append_child_node('author','linage'); $test->append_child_node('page',100); $test->append_child_node('money','35 RMB'); $test->append_root_node_end(); $test->append_root_node('book','name','The"Web"Servers'); $test->append_child_node('a u t ho"r','li n a g e'); $test->append_child_node('page',100); $test->append_child_node('money','35 RMB'); $test->append_root_node_end(); $test->display(); $test->save(); 生成的xml结果: <?xml version="1.0" encoding="utf-8"?> <document> <book> <author>linage</author> <page>100</page> <money>35 RMB</money> </book> <book name="TheWebServers"> <author>li n a g e</author> <page>100</page> <money>35 RMB</money> </book> </document> */ class xml{ var $version ; var $encoding ; var $start ; var $end ; var $filename ; var $xml_document ; var $root_start ; var $root_end ; var $rss_start ; var $rss_end ; function xml( $ver = '1.0' , $encoding = 'GB2312' ){ $this ->version= "<?xml version=/" { $ver }/ " encoding=/" { $encoding }/ " standalone=/" yes/ " ?>" ; $this ->rss_start= "<rss version=/" 2.0/ " xmlns:domxml=/" [url]http: //xml.666life.com/rss/1.0[/url]/" xmlns:geo=/"[url]http://www.w3.org/2003/01/geo/wgs84_pos#[/url]/">"; $this ->rss_end= "</rss>" ; } function new_xml( $filename ){ $this ->filename= $filename ; return true; } function root( $element ){ $element = $this ->filter( $element ); if (isset( $this ->start) and isset( $this -> end )){ exit ( "error:Only one top level element is allowed in an XML document./r/n" ); } else { $this ->start= "<$element>" ; $this -> end = "</$element>" ; $this ->xml_document= $this ->version. "/n" . $this ->rss_start. "/n" . $this ->start. "/n" ; return true; } } function append_root_node( $title , $property =null, $pro_val =null){ $title = $this ->filter( $title ); $property = $this ->filter( $property ); $pro_val = $this ->filter( $pro_val ); $property !=null? $pro_str = " $property=/" $pro_val / "" : $property =null; $contents = "<{$title}{$pro_str}>/n" ; $this ->xml_document.= $contents ; $this ->root_end= "</$title>" ; return true; } function append_root_node_end(){ $this ->xml_document.= $this ->root_end. "/n" ; return true; } function append_child_node( $title = 'undefined' , $contents = 'undefined' , $property =null, $pro_val =null, $cddate =false){ isset( $property )? $pro_str = " $property=/" $pro_val / "" : $property =null; $title = $this ->filter( $title ); $contents = $this ->filter( $contents ,false); $property = $this ->filter( $property ); $pro_val = $this ->filter( $pro_val ); $cddate ===false? $cddate =false: $cddate =true; if ( $cddate ){ $contents = "<{$title}{$pro_str}><!--[CDATA['/n$contents/n']]--></$title>/n" ; } else { $contents = "<{$title}{$pro_str}>$contents</$title>" ; } $this ->xml_document.= $contents . "/n" ; return true; } function display(){ header( "Content-type: text/xml" ); $xml = $this ->xml_document. $this -> end . "/n" . $this ->rss_end; echo $xml ; //return true; } function filter( $sring , $replace_null =true){ $filter []= '"' ; $filter []= "//" ; $filter []= "/n" ; $filter []= "/r" ; $filter []= "/t" ; $replace_null ===true? $filter []= " " : $replace_null =false; foreach ( $filter as $val ){ $sring = str_replace ( $val , '' , $sring ); } return $sring ; } function encode(){ //you can add the convert encode function here or add other class to do that } function save(){ $this ->xml_document= $this ->xml_document. $this -> end . "/n" . $this ->rss_end; $handle = fopen ( $this ->filename, 'wb+' ); $result =fwrite( $handle , $this ->xml_document); fclose( $handle ); if ( $result ){ return true; } else { echo "error:can't write to files,maybe the access denied.try to chmod 777 the directory?" ; return false; } } } |
希望本文所述对大家PHP程序设计有所帮助。