php读取xml
php可以读取xml可以用来做读取webservices,网上找了一下,学习了一下php读取xml,有很多中方法,首先介绍用parser函数读取xml,在网上有很多读取"姓名,职位"的例子,不知道你们读出来没有,我反正没有弄出来,不过我最后找到了原因是编码问题.在utf-8和gb2312中转换一下编码.
我也是借鉴了那个主程序代码做了部分修改.并读取了站的最新文章的xml.
借鉴代码网址:
修改代码以及详细解释如下:
<?
header("content-Type: text/html; charset=gb2312");#首先确定输出的是gb2312编码
$parser = xml_parser_create(); //创建一个parser编辑器
xml_set_element_handler($parser, "startElement", "endElement");//设立标签触发时的相应函数 这里分别为startElement和endElenment
xml_set_character_data_handler($parser, "characterData");//设立数据读取时的相应函数
$xml_file="http://www.forasp.cn/rss.asp";//指定所要读取的xml文件,可以是url
$filehandler = fopen($xml_file, "r");//打开文件
if($filehandler)die("读取xml失败");
while ($data = fread($filehandler, 4096))
{ xml_parse($parser,$data,feof($filehandler));}//每次取出4096个字节进行处理
fclose($filehandler);#关闭打开文件资源
xml_parser_free($parser);//关闭和释放parser解析器
function startElement($parser_instance, $element_name, $attrs)//起始标签事件的函数即每次处理的节点都要从这里开始.$parser_instance是资源序号,一般不用,你可以输出来看看, $element_name是节点的名称,$attrs是数组,但都是空的,不知道为什么,也不知道有什么用
{#下面节点名称的输出是根据http://www.forasp.cn/rss.asp网站制作学习网最新更新内容的xml解析.
switch ($element_name){
case "TITLE":
echo "文章标题(名称):";
break;
case "DESCRIPTION":
echo "描述:";
break;
case "AUTHOR":
echo "作者:";
break;
case "LINK":
echo "连接:";
break;
case "PUBDATE"://
echo "发布时间:";
break;
case "GENERATOR":
echo "创建者";
break;
case "WEBMASTER":
echo "管理员:";
break;
case "IMAGE":
echo "图片:";
break;
case "EMAIL":
echo "邮件:";
break;
}
}
function characterData($parser_instance, $xml_data){//读取数据时的函数,输出该xml内容,参数一是资源id,参数2是要输出节点的内容
echo mb_convert_encoding($xml_data,"GB2312","UTF-8");//这里特别注意一下:需要更换编码的则要注意.
}
function endElement($parser_instance, $element_name){//结束标签事件的函数,每个节点输出结束,添加一个换行以便前台显示的比较好看.
echo "<br>";
}
?>
可以保存文foraspcn.php运行一下,看看读取xml后的结果.