一、XML 文件 XML(Extensible Markup Language)即可扩展标记语言,它与 HTML 一样,都是 SGML(Standard Generalized Markup Language,标准通用标记语言)。
XML 是 Internet 环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具。扩展标记语言 XML 是一种简单的数据存储语言,使用一系列简单的标记描述数据,而这些标记可以用方便的方式建立,虽然 XML 占用的空间比二进制数据要占用更多的空间,但 XML 极其简单易于掌握和使用。
XML 的用途很多,可以用来存储数据,可以用来做数据交换,为很多种应用软件提示数据等等。
源文件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 <?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> </xml>
二、读取方法 1.DOMDocument 1 2 3 4 5 6 7 8 9 10 11 12 13 14 <?php $doc = new DOMDocument (); $doc ->load ('person.xml' ); $humans = $doc ->getElementsByTagName ( "humans" ); foreach ( $humans as $human ) { $names = $human ->getElementsByTagName ( "name" ); $name = $names ->item (0 )->nodeValue; $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 1 2 3 4 5 6 <?php $xml_array =simplexml_load_file ('person.xml' ); foreach ($xml_array as $tmp ) { echo $tmp ->name."-" .$tmp ->sex."-" .$tmp ->old."<br>" ; } ?>
3.正则表达式 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 <?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 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 <?php $reader = new XMLReader (); $reader ->open ('person.xml' ); $i =1 ; while ($reader ->read ()) { if ($reader ->nodeType == XMLReader ::TEXT ) { if ($i %3 ) { echo $reader ->value; } else { echo $reader ->value."<br>" ; } $i ++; } } ?>
三、小结 读取 XML 的方法很多,简单举几个。上面四种方法都是可以把标签中的数据读出来,张映 .但是他们的测重点不同,前三种方法的读取 XML 的 function 的设计重点,是为了读取标签中的值,相当于 jquery 中的 text()方法,而 xmlreader 呢他就不太一样,他的重点不在读取标签中的值,而读取标签的属性,把要传送的数据,都放在属性中(不过我上面写的那个方法还是取标签中的值,因为 XML 文件已经给定了,我就不想在搞 XML 文件出来了)。 举个例子解释一下,
1 <data name =’张映’ sex =’男’ old =’28′ > </data >
xmlreader 的设计重点是为了读 data 里面的 name sex old 的值,而读取 的内容就比较麻烦了。他相当于 jquery 中 attr(”);这个东西。