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高级应用的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did29983