首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > PHP >

php读取xml有关问题

2012-04-13 
php读取xml问题在网上下了个例子,代码如下但是运行却没有显示,只显示了 名字: 后面就什么也没有了,是不

php读取xml问题
在网上下了个例子,代码如下但是运行却没有显示,只显示了 "名字: "后面就什么也没有了,是不是哪里还需要配置一下呀,请大家帮忙解决!!
<?php
$parser   =   xml_parser_create();   //创建一个parser编辑器
xml_set_element_handler($parser,   "startElement ",   "endElement ");//设立标签触发时的相应函数   这里分别为startElement和endElenment
xml_set_character_data_handler($parser,   "characterData ");//设立数据读取时的相应函数
$xml_file= "1.xml ";//指定所要读取的xml文件,可以是url
$filehandler   =   fopen($xml_file,   "r ");//打开文件

 


while   ($data   =   fread($filehandler,   4096))  
{
        xml_parse($parser,   $data,   feof($filehandler));
}//每次取出4096个字节进行处理

fclose($filehandler);
xml_parser_free($parser);//关闭和释放parser解析器


$name=false;
$position=false;
function   startElement($parser_instance,   $element_name,   $attrs)                 //起始标签事件的函数
  {
      global   $name,$position;    
      if($element_name== "NAME ")
      {
      $name=true;
      $position=false;
      echo   "名字: ";
    }
    if($element_name== "POSITION ")
      {$name=false;
      $position=true;
      echo   "职位: ";
    }
}

function   characterData($parser_instance,   $xml_data)                                     //读取数据时的函数  
{
      global   $name,$position;
      if($position)
        echo   $xml_data. " <br> ";
        if($name)
          echo   $xml_data. " <br> ";
}

function   endElement($parser_instance,   $element_name)                                   //结束标签事件的函数
{
  global   $name,$position;  
$name=false;
$position=false;    
}

?>

 

xml文件代码如下:

 


<?xml   version= "1.0 "?>
<employees>
<employee>
<name> 张三 </name>
<position   age= "45 "> 经理 </position>
</employee>
<employees>
<employee>
<name> 李四 </name>
<position   age= "45 "> 助理 </position>
</employee>
</employees>



[解决办法]
有个加过密的xml类,可以把任何xml读成数组的,里面也是用PHP内置函数实现的。要发给你
[解决办法]
估摸着你的XML是GB2312编码的,XML默认是UTF-8的。你把你的XML文件改成UTF8的试试。
[解决办法]
源文件是对的,在PHP4下面测试是正确的
[解决办法]
编码是utf-8的。不知在gb2312环境有没影响
[解决办法]
当然有影响,如果是utf-8的,你想用在gb2312下,最好转码
------解决方案--------------------


检查你的编码,包括XML的,PHP文件的,终端的,所有的设成一致。

如果有不一致的地方,自己做转码。
[解决办法]
iconv()转换

php.ini
extension=php_iconv.dll
extension=php_mbstring.dll

热点排行