当前位置:首页 > PHP教程 > php应用 > 列表

php解析xml方法实例详解

发布:smiling 来源: PHP粉丝网  添加日期:2021-05-26 16:45:19 浏览: 评论:0 

本文以实例形式详细讲述了php解析xml方法,分享给大家供大家参考,具体分析如下:

books.xml文件如下:

  1. <?xml version="1.0" encoding="ISO-8859-1"?> 
  2. <bookstore> 
  3.  <book category="children"
  4.  <title lang="en">Harry Potter</title> 
  5.  <author>J K. Rowling</author> 
  6.  <year>2005</year> 
  7.  <price>29.99</price> 
  8.  </book> 
  9.  <book category="cooking"
  10.  <title lang="en">Everyday Italian</title> 
  11.  <author>Giada De Laurentiis</author> 
  12.  <year>2005</year> 
  13.  <price>30.00</price> 
  14.  </book> 
  15.  <book category="web" cover="paperback"
  16.  <title lang="en">Learning XML</title> 
  17.  <author>Erik T. Ray</author> 
  18.  <year>2003</year> 
  19.  <price>39.95</price> 
  20.  </book> 
  21. </bookstore> 

1、DOM解析XML

  1. <?php 
  2.  //创建一个DOMDocument对象 
  3.  $doc=new DOMDocument(); 
  4.  //加载XML文件 
  5.  $doc->load("books.xml"); 
  6.  //获取所有的book标签 
  7.  $bookDom=$doc->getElementsByTagName("book"); 
  8.  foreach($bookDom as $book){ 
  9.   $title = $book->getElementsByTagName("title")->item(0)->nodeValue; 
  10.   $author = $book->getElementsByTagName("author")->item(0)->nodeValue; 
  11.   $year = $book->getElementsByTagName("year")->item(0)->nodeValue; 
  12.   $price = $book->getElementsByTagName("price")->item(0)->nodeValue; 
  13.   echo "title:".$title."<br>"
  14.   echo "author:".$author."<br>"
  15.   echo "year:".$year."<br>"
  16.   echo "price:".$price ."<br>"
  17.   echo "***********************************<br>"
  18.  } 
  19. ?> 

2、xml_parse_into_struct

创建解析器,将xml数据解析到数组,释放解析器,再有就是从数组中提取想要的值。

  1. <?php 
  2.  // 读取xml文件 
  3.  $file = "books.xml"
  4.  $data = file_get_contents($file); 
  5.  // 创建解析器 
  6.  $parser = xml_parser_create(); 
  7.  // 将 XML 数据解析到数组中 
  8.  xml_parse_into_struct($parser$data$vals$index); 
  9.  // 释放解析器 
  10.  xml_parser_free($parser); 
  11.  // 数组处理 
  12.  $arr = array(); 
  13.  $t=0; 
  14.  foreach($vals as $value) { 
  15.  $type = $value['type']; 
  16.  $tag = $value['tag']; 
  17.  $level = $value['level']; 
  18.  $attributes = isset($value['attributes'])?$value['attributes']:""
  19.  $val = isset($value['value'])?$value['value']:""
  20.  switch ($type) { 
  21.   case 'open'
  22.   if ($attributes != "" || $val != "") { 
  23.    $arr[$t]['tag'] = $tag
  24.    $arr[$t]['attributes'] = $attributes
  25.    $arr[$t]['level'] = $level
  26.    $t++; 
  27.   }  
  28.   break
  29.   case "complete"
  30.   if ($attributes != "" || $val != "") { 
  31.    $arr[$t]['tag'] = $tag
  32.    $arr[$t]['attributes'] = $attributes
  33.    $arr[$t]['val'] = $val
  34.    $arr[$t]['level'] = $level
  35.    $t++; 
  36.   }  
  37.   break
  38.  }  
  39.  }  
  40.  echo "<pre>"
  41.  print_r($arr); 
  42.  echo "</pre>"
  43. ?> 

3、用 SAX 解析器读取 XML-----XML Simple API(SAX)解析器

  1. <?php 
  2.  $file="books.xml"
  3.  $xml = simplexml_load_file($file); 
  4.  echo "<pre>"
  5.  print_r($xml); 
  6.  echo "</pre>"
  7. ?>

Tags: php解析xml

分享到:

相关文章