>  기사  >  백엔드 개발  >  php使用dom解析含有中文字符xml文档_PHP教程

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

WBOY
WBOY원래의
2016-07-13 10:55:37789검색

一般我们直接使用dom来处理xml文档时如果里面有中文就会把中文转换成乱码了,下面我们通过使用iconv()函数实现编码转换,防止中文乱码.

 

 代码如下 复制代码
//读取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.'年'.'';
//获得该年份下所有的假日
$holidays = $year->getElementsByTagName("holiday");
//对每一个假日进行处理
foreach($holidays as $holiday){
//获得假日名称
$holidayNames = $holiday->getElementsByTagName("holidayName");
$holidayName = $holidayNames->item(0)->nodeValue;
echo iconv('utf-8','gb2312', $holidayName).': '.'';
//获得假日的具体放假日期
$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.'';
//获得针对该假日的调休日期
$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 '';
}
echo '';
}
}
?>

xml文件

 代码如下 复制代码



2012

元旦

2012-1-1
2012-1-3


2011-12-31



春节

2012-1-22
2012-1-28


2012-1-21
2012-1-29



清明节

2012-4-2
2012-4-4


2012-3-31
2012-4-1



劳动节

2012-4-29
2012-5-1


2012-4-28



端午节

2012-6-22
2012-6-24




中秋节、国庆节

2012-9-30
2012-10-7


2012-9-26




设计知识点:
1、XML节点循环读取
2、用iconv()函数实现编码转换,防止中文乱码

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/632240.htmlTechArticle一般我们直接使用dom来处理xml文档时如果里面有中文就会把中文转换成乱码了,下面我们通过使用iconv()函数实现编码转换,防止中文乱码...
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.