PHP处理XML的解析方式

以前习惯了用simplexml_load_string,昨天发现了xml_parser_create 这个函数对XML文件的处理更加有效方便。
整理了几个代码函数,方便大家的使用
[code]
/**
* @function parser_item
* 解析标签 返回所要的条目数组
* @param string $xml_data XML数据
* @param string $item 需要捕获的标签
* @return array 重新组合的条目数组
* 注:该函数需要
*/
function xml_parser_item($xml_data, $item)
{
//建立一个 XML 解析器
$parser = xml_parser_create();
//xml_parser_set_option — 为指定 XML 解析进行选项设置
xml_parser_set_option($parser,XML_OPTION_SKIP_WHITE,1);
//xml_parse_into_struct — 将 XML 数据解析到数组$values中
xml_parse_into_struct($parser,$xml_data,$values,$tags);
//xml_parser_free — 释放指定的 XML 解析器
xml_parser_free($parser);
// 遍历 XML 结构
foreach ($tags as $key=>$val) {
if ($key == $item) {
$molranges = $val;
for ($i=0; $i < count($molranges); $i+=2) { $offset = $molranges[$i] + 1; $len = $molranges[$i + 1] - $offset; $tdb[] = parseMol(array_slice($values, $offset, $len)); } } else { continue; } } return $tdb; } //处理构造条目 function parseMol($mvalues) { for ($i=0; $i < count($mvalues); $i++) { if(isset($mvalues[$i]["value"])) $mol[strtolower($mvalues[$i]["tag"])] = $mvalues[$i]["value"]; } return $mol; } [/code] 值得注意的xml_parse_into_struct($parser,$xml_data,$values,$tags); 后面两个参数的值,是函数返回的数组指针跟同一XML标签对应包含的键值