一般我們直接使用dom來處理xml文檔時如果里面有中文就會把中文轉換成亂碼了,下面我們通過使用iconv()函數實現編碼轉換,防止中文亂碼.代碼如下:
- <?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>';
- }
- }
- ?>
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>
1、XML節點循環讀取
2、用iconv()函數實現編碼轉換,防止中文亂碼
新聞熱點
疑難解答