本文以实例形式详细讲述了php解析xml方法。分享给大家供大家参考。具体分析如下:
books.xml文件如下:
<?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
<?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数据解析到数组,释放解析器,再有就是从数组中提取想要的值。
<?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)解析器
<?php $file=\"books.xml\"; $xml = simplexml_load_file($file); echo \"<pre>\"; print_r($xml); echo \"</pre>\"; ?>
希望本文所述对大家的php程序设计有所帮助。
本文地址:https://www.stayed.cn/item/9863
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我