加入收藏 | 设为首页 | 会员中心 | 我要投稿 汽车网 (https://www.0577qiche.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2023-05-26 13:43:34 所属栏目:PHP教程 来源:
导读:一般我们直接使用dom来处理xml文档时如果里面有中文就会把中文转换成乱码了,下面我们通过使用iconv()函数实现编码转换,防止中文乱码.代码如下:

<?php
//读取xml文件
$xmlDoc = new DOMDocument();
$xm
一般我们直接使用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()函数实现编码转换,防止中文乱码

(编辑:汽车网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章