一,什么是xml,xml有什么用途
XML(Extensible Markup Language)即可扩展标记语言,它与HTML一样,都是SGML(Standard Generalized Markup Language,标准通用标记语言)。Xml是Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具。扩展标记语言XML是一种简单的数据存储语言,使用一系列简单的标记描述数据,而这些标记可以用方便的方式建立,虽然XML占用的空间比二进制数据要占用更多的空间,但XML极其简单易于掌握和使用。
XML的用途很多,可以用来存储数据,可以用来做数据交换,为很多种应用软件提示数据等等。
二,php读取xml的方法
xml源文件- <?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- $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- $xml_array = simplexml_load_file('person.xml');//将XML中的数据,读取到数组对象中
-
- foreach ($xml_array as $tmp) {
- echo $tmp->name.'-'.$tmp->sex.'-'.$tmp->old.'<br>';
- }
复制代码 3)用php正则表达式来记取数据- //读取数据
- $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数据- $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++;
- }
- }
复制代码 |