PHP生成和解析xml(SimpleXML版)

xml就不多解释了,php也提供了操作xml的方法,php操作xml可以有多种方式如domdocment,simplexml,xmlwriter等其中最简单的应该是simplexml了,这次就来说说simplexml怎么读取和解析xml文件或字符串

1.生成xml字符串和文件

<?php
  header("Content-type: text/html; charset=utf-8"); 
  $xml=new SimpleXMLElement('<?xml version="1.0" encoding="utf-8"?><UsersInfo />');
  $item=$xml->addchild("item");
  $item->addchild("name","冯绍峰");
  $item->addchild("age","30"); 
  $item2=$xml->addchild("item");
  $item2->addchild("name","潘玮柏");
  $item2->addchild("age","29");
  $item2->addAttribute("id","02");
  header("Content-type: text/xml");
  echo $xml->asXml();
  $xml->asXml("student.xml");
?>

生成xml最重要的就是addchild,addAttribute,asXml三个方法,如果只是单纯生成xml文件的话那个header可以不要,下面是浏览器的显示结果

PHP生成和解析xml(SimpleXML版)_第1张图片

是不是很简单呢

2.simplexml解析xml文件或字符串

<?php
  header("Content-type: text/html; charset=utf-8"); 
  $xml=simplexml_load_file("UserInfo.xml");
  //通过children取得根节点下面的子项
  for($i=0;$i<count($xml->children());$i++){
      foreach ($xml->children()[$i] as $key => $value ) {
       echo "$key:$value"."<br/>";
     }
  }
  
  
?>

上面的方法适合解析xml文件,如果是xml字符串就把simplexml_load_file改为simplexml_load_string就可以了,children用于取得根节点或者子节点,取得的节点是一个数组直接遍历必要的时候加上过滤条件就可以了,下面是解析的结果

PHP生成和解析xml(SimpleXML版)_第2张图片

顺便把我的xml文件贴出来

<?xml version="1.0" encoding="UTF-8"?>
<UsersInfo>
  <item>
     <name>潘玮柏</name>
     <address>上海市浦东新区</address>
     <song>快乐崇拜</song>
  </item>
  <item>
     <name>蔡依林</name>
     <address>上海市徐汇区</address>
     <song>独占神话</song>
  </item>
</UsersInfo>

总的说来操作真的太简洁了,下次和大家分享的是domdocment操作xml. 再见


你可能感兴趣的:(xml,simplexml)