php解析xml方法实例详解

前端技术 2023/09/04 PHP

本文以实例形式详细讲述了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

转载请注明出处。

本站部分内容来源于网络,如侵犯到您的权益,请 联系我

我的博客

人生若只如初见,何事秋风悲画扇。