php中使用DOM类读取XML文件的实现代码

  主要功能:php中使用DOM类读取XML文件

  设计知识点:

  1、XML节点循环读取

  2、用iconv()函数实现编码转换,防止中文乱码

  holiday.xml文件如下

  

复制代码 代码如下:

  <?xml version="1.0" encoding="UTF-8"?>

  <daysOff-overTime>

  <year>

  <yearName>2012</yearName>

  <holiday>

  <holidayName>元旦</holidayName>

  <daysOff>

  <from>2012-1-1</from>

  <to>2012-1-3</to>

  </daysOff>

  <overTime>

  <day>2011-12-31</day>

  </overTime>

  </holiday>

  <holiday>

  <holidayName>春节</holidayName>

  <daysOff>

  <from>2012-1-22</from>

  <to>2012-1-28</to>

  </daysOff>

  <overTime>

  <day>2012-1-21</day>

  <day>2012-1-29</day>

  </overTime>

  </holiday>

  <holiday>

  <holidayName>清明节</holidayName>

  <daysOff>

  <from>2012-4-2</from>

  <to>2012-4-4</to>

  </daysOff>

  <overTime>

  <day>2012-3-31</day>

  <day>2012-4-1</day>

  </overTime>

  </holiday>

  <holiday>

  <holidayName>劳动节</holidayName>

  <daysOff>

  <from>2012-4-29</from>

  <to>2012-5-1</to>

  </daysOff>

  <overTime>

  <day>2012-4-28</day>

  </overTime>

  </holiday>

  <holiday>

  <holidayName>端午节</holidayName>

  <daysOff>

  <from>2012-6-22</from>

  <to>2012-6-24</to>

  </daysOff>

  <overTime/>

  </holiday>

  <holiday>

  <holidayName>中秋节、国庆节</holidayName>

  <daysOff>

  <from>2012-9-30</from>

  <to>2012-10-7</to>

  </daysOff>

  <overTime>

  <day>2012-9-26</day>

  </overTime>

  </holiday>

  </year>

  </daysOff-overTime>

  php代码如下:

  

复制代码 代码如下:

  <?php

  //读取xml文件

  $xmlDoc = new DOMDocument();

  $xmlDoc->load('http://127.0.0.1/holiday.xml');

  //获得该xml文件中的所有年份

  $years = $xmlDoc->getElementsByTagName("year");

  //对每一个年份进行处理

  foreach($years as $year){

  //获得具体的年份值

  $yearNames = $year->getElementsByTagName("yearName");

  $yearName = $yearNames->item(0)->nodeValue;

  echo $yearName.'年'.'</br>';

  //获得该年份下所有的假日

  $holidays = $year->getElementsByTagName("holiday");

  //对每一个假日进行处理

  foreach($holidays as $holiday){

  //获得假日名称

  $holidayNames = $holiday->getElementsByTagName("holidayName");

  $holidayName = $holidayNames->item(0)->nodeValue;

  echo iconv('utf-8','gb2312', $holidayName).': '.'</br>';

  //获得假日的具体放假日期

  $daysOffs = $holiday->getElementsByTagName("daysOff");

  $daysOff = $daysOffs->item(0);

  $froms = $daysOff->getElementsByTagName("from");

  $from = $froms->item(0)->nodeValue;

  $tos = $daysOff->getElementsByTagName("to");

  $to = $tos->item(0)->nodeValue;

  echo '假期为:'.$from.' 至 '.$to.'</br>';

  //获得针对该假日的调休日期

  $overTimes = $holiday->getElementsByTagName("overTime");

  $overTime = $overTimes->item(0);

  $days = $overTime->getElementsByTagName("day");

  //通过判断,有调休日期则显示,没有则不显示

  if($days->length!=0){

  echo '调休日为:';

  foreach($days as $day){

  echo $day->nodeValue.' ';

  }

  echo '</br>';

  }

  echo '</br>';

  }

  }

  ?>

  

  输出显示:

php中使用DOM类读取XML文件的实现代码