设计知识点:
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>';
}
}
?>
输出显示:
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:)!