php专区

 首页 > php专区 > PHP应用 > 常用功能 > php使用dom解析含有中文字符xml文档 - php高级应用

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

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

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

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

  1. //读取xml文件  
  2. $xmlDoc = new DOMDocument();  
  3. $xmlDoc->load('http://127.0.0.1/holiday.xml');  
  4. //获得该xml文件中的所有年份  
  5. $years = $xmlDoc->getElementsByTagName("year");  
  6. //对每一个年份进行处理  
  7. foreach($years as $year){  
  8. //获得具体的年份值  
  9. $yearNames = $year->getElementsByTagName("yearName");  
  10. $yearName = $yearNames->item(0)->nodeValue;  
  11. echo $yearName.'年'.'
    '
    ;  
  12. //获得该年份下所有的假日  
  13. $holidays = $year->getElementsByTagName("holiday");  
  14. //对每一个假日进行处理  
  15. foreach($holidays as $holiday){  
  16. //获得假日名称  
  17. $holidayNames = $holiday->getElementsByTagName("holidayName");  
  18. $holidayName = $holidayNames->item(0)->nodeValue;  
  19. echo iconv('utf-8','gb2312'$holidayName).': '.'
    '
    ;  
  20. //获得假日的具体放假日期  
  21. $daysOffs = $holiday->getElementsByTagName("daysOff");  
  22. $daysOff = $daysOffs->item(0);  
  23. $froms = $daysOff->getElementsByTagName("from");  
  24. $from = $froms->item(0)->nodeValue;  
  25. $tos = $daysOff->getElementsByTagName("to");  
  26. $to = $tos->item(0)->nodeValue;  
  27. echo '假期为:'.$from.' 至 '.$to.'
    '
    ;  
  28. //获得针对该假日的调休日期  
  29. $overTimes = $holiday->getElementsByTagName("overTime");  
  30. $overTime = $overTimes->item(0);  
  31. $days = $overTime->getElementsByTagName("day");  
  32. //通过判断,有调休日期则显示,没有则不显示  
  33. if($days->length!=0){  
  34. echo '调休日为:';  
  35. foreach($days as $day){  
  36. echo $day->nodeValue.' ';  
  37. }  
  38. echo '
    '
    ;  
  39. }  
  40. echo '
    '
    ;  
  41. }  
  42. }  
  43. ?> 

xml文件代码如下:

  1. "1.0" encoding="UTF-8"?>  
  2.   
  3.   
  4. 2012  
  5.   
  6. 元旦  
  7.   
  8. 2012-1-1  
  9. 2012-1-3  
  10.   
  11.   
  12. 2011-12-31  
  13.   
  14.   
  15.   
  16. 春节  
  17.   
  18. 2012-1-22  
  19. 2012-1-28  
  20.   
  21.   
  22. 2012-1-21  
  23. 2012-1-29  
  24.   
  25.   
  26.   
  27. 清明节  
  28.   
  29. 2012-4-2  
  30. 2012-4-4  
  31.   
  32.   
  33. 2012-3-31  
  34. 2012-4-1  
  35.   
  36.   
  37.   
  38. 劳动节  
  39.   
  40. 2012-4-29  
  41. 2012-5-1  
  42.   
  43.   
  44. 2012-4-28  
  45.   
  46.   
  47.   
  48. 端午节  
  49.   
  50. 2012-6-22  
  51. 2012-6-24  
  52.   
  53.   
  54.   
  55.   
  56. 中秋节、国庆节  
  57.   
  58. 2012-9-30  
  59. 2012-10-7  
  60.   
  61.   
  62. 2012-9-26  
  63.   
  64.   
  65.   
  66.  
设计知识点:

1、XML节点循环读取 

2、用iconv()函数实现编码转换,防止中文乱码

分享到:
PHP中常用三种缓存技术 - php高级应用
PHP中常用三种缓存技术 我是把目前php的Cache分成了这四种机制,第一种方式,需要加载模块,可能是收费的比如ZEND公司的,可能是免费的,不过多讨论;第二种方式,比如在成熟的大的站点上用比较合适;第三种方式和第四种四目前PHP业内程序中比较流行的方式 分成3个类别 1.缓存模块  这个是在服务...
XSLTProcessor 中 registerPHPFunctions ...
XSLTProcessor 中 registerPHPFunctions 后无法调用 php 函数 XSLT 是一个非常方便的转换 XML 的工具,PHP 里面是通过 XSLTProcessor 来实现;XSLT 中内置了许多有用的函数,同时,只需要调用 XSLTProcessor 实例的 registerPHPFunctions 方法,我们就可以在 XSLT 中直接使用 PHP 的函数,这...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……