PHP读取XML的两种方法

PHP 1717 0 2013-04-27

PHP读取XML的两种方法
第一:使用 DOM 库读取 XML数据
<?php
$doc=new DOMDocument();
$doc->load( '001.xml');

$employees=$doc->getElementsByTagName("employee");
foreach($employees as $employee)
{
$names=$employee->getElementsByTagName("name");
$name=$names->item(0)->nodeValue;

$positions=$employee->getElementsByTagName("position");
$position=$positions->item(0)->nodeValue;

echo("$name - $position <br /> \n");
}
?>

第二:使用parser函数来读取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="001.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" encoding="gb2312"?>
<employees>
<employee>
<name>first</name>
<position>Chen Yixiu</position>
</employee>
<employee>
<name>second</name>
<position>JAES</position>
</employee>
</employees>

上一篇:PHP添加与删除反斜线函数

下一篇:PHP生成静态html实例

讨论数量:0

请先登录再发表讨论。 2025-07-04

天涯网魂
3 杠 5 星
TA 的文章
TA 的随言
TA 的资源链