好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

php使用dom解析含有中文字符xml文档 - php高级应用

php使用dom解析含有中文字符xml文档

一般我们直接使用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()函数实现编码转换,防止中文乱码

查看更多关于php使用dom解析含有中文字符xml文档 - php高级应用的详细内容...

  阅读:37次