ÈÈÃŹؼü×Ö£º ¡¡PHP ¡¡Cisco ¡¡seo ¡¡ÍøÂç¹ã¸æ ÐéÄâÖ÷»ú ÖÐÎÄÓòÃû
µ±Ç°Î»Öà :| Ö÷Ò³>±à³Ì¿ª·¢>PHP>XMLÓ¦ÓÃ>

PHP ²Ù×÷ XML Îļþ - ¶ÁÈ¡¡¢ÏÔʾ

À´Ô´£ºËÑÕ¾³¤ËѼ¯ ×÷ÕߣºÎ´Öª ʱ¼ä£º2005-11-29 µã»÷£º

²Î¿¼£º PHP°®ºÃÕß

±¾ÀýÖеÄxmlÎļþλÓÚ http://www.slashdot.org/slashdot.xml

±¾ÀýÖеÄphpÎļþ¶ÁÈ¡¡¢ÏÔʾxmlÎļþÄÚÈÝ

ÒÔÏÂΪphpÎļþµÄÄÚÈÝ£¬°Ñ¸ÃphpÎļþºÍslashdot.xml·ÅÔÚͬһ¸öÎļþ¼Ð¼´¿É

<?php
$open_tags = array(
    'STORY' => '<STORY>',
    'TITLE' => '<TITLE>',
    'URL' => '<URL>',
 'AUTHOR'=> '<AUTHOR>'
 );

$close_tags = array(
    'STORY' => '</STORY>',
    'TITLE' => '</TITLE>',
    'URL' => '</URL>',
 'AUTHOR'=> '</AUTHOR>'
 );
?>

<?php
//ÏÂÃæ¾ÍÊǶ¨Ò庯ÊýÀ´ÌáÈ¡Êý¾Ý£º

// ´¦Àí¿ªÊ¼±ê¼ÇµÄÊôÐÔÖ¸
// $attrsÊÇÒ»¸ö¶àάÊý×飬¼üֵΪÊôÐÔÃû£¬ Öµ¾ÍÊǸÃÊôÐÔµÄÖµ
function startElement($parser, $name, $attrs=''){
    global $open_tags, $temp, $current_tag;
    $current_tag = $name;
    if ($format = $open_tags[$name]){
    switch($name){
        case 'STORY':
        echo 'еĹÊÊÂ: ';
        break;
        default:
        break;
    }
    }
}

// $current_tag¸æËßÎÒÃÇÕýÔÚ´¦ÀíµÄ±ê¼Ç£¬ÎÒÃÇËæºó»áÔÚcharacterDataº¯ÊýÖÐʹÓÃ
//
// µ±Óöµ½</STORY>±ê¼ÇʱÎÒÃÇÖªµÀÒªflushËùÓеÄÁÙʱ±äÁ¿×¼±¸²Ù×÷ÏÂÒ»¸ö±ê¼Ç
function endElement($parser, $name, $attrs=''){
    global $close_tags, $temp, $current_tag;
    if ($format = $close_tags[$name]){
    switch($name){
        case 'STORY':
        return_page($temp);
        $temp = '';
        break;
        default:
        break;
    }
    }
}

// ´«Ë͸ø´Ëº¯ÊýµÄÊÇÔªËØ¼äµÄÊý¾Ý
// ÀýÈ磬¶Ô<TITLE>Title Here</TITLE>£¬$data¾ÍµÈÓÚ'Title Here'
function characterData($parser, $data){
    global $current_tag, $temp, $catID;
    switch($current_tag){
    case 'TITLE':
        $temp['title'] = $data;
        $current_tag = '';
        break;
    case 'URL':
        $temp['url'] = $data;
        $current_tag = '';
        break;
 case 'AUTHOR':
     $temp['author'] = $data;
        $current_tag = '';   
    default:
        break;
    }
}
?> 


<?php

function return_page(){
    global $temp;
    echo 'o <A HREF="'.$temp['url'].'">'.$temp['title'].'</A><BR>';
 echo 'Author£º'.$temp['author'].'<BR>';
 echo '-----------------------------';
 echo '<br>';
}

// ·ÖÎöµÄÄÚÈÝ
$xml_file = 'slashdot.xml';

// ¶¨Òå×Ö·û¼¯£¬Ä¬ÈÏÊÇUTF-8
$type = 'UTF-8';

// ½¨Á¢½âÎöÆ÷
$xml_parser = xml_parser_create($type);

// ÉèÖýâÎöÑ¡Ïî
xml_parser_set_option($xml_parser, XML_OPTION_CASE_FOLDING, true);
xml_parser_set_option($xml_parser, XML_OPTION_TARGET_ENCODING, 'UTF-8');

// ¸æËßPHP·¢ÏÖÔªËØÊ±Òªµ÷ÓÃʲôº¯Êý
// ÕâЩº¯ÊýͬʱҲ´¦ÀíÔªËØµÄÊôÐÔ
xml_set_element_handler($xml_parser, 'startElement','endElement');

//¸æËßPHP¶Ô×Ö·ûÊý¾Ýµ÷ÓÃʲôº¯Êý
xml_set_character_data_handler($xml_parser, 'characterData');

if (!($fp = fopen($xml_file, 'r'))) {
    die("ÎÞ·¨´ò¿ª $xml_file Îļþ½øÐнâÎö!n");
}

// ͨ¹ýÑ­»·À´½âÎöÕû¸öÎļþ
while ($data = fread($fp, 4096)) {
    if (!($data = utf8_encode($data))) {
        echo 'ERROR'."n";
    }
    if (!xml_parse($xml_parser, $data, feof($fp))) {
        die(sprintf( "XML error: %s at line %dnn",
        xml_error_string(xml_get_error_code($xml_parser)),
        xml_get_current_line_number($xml_parser)));
    }
}

xml_parser_free($xml_parser);

?>


ÉÏһƪ£ºÓÃPHP5ÇáËɽâÎöXML
ÏÂһƪ£ºÃ»ÓÐÁË
×îÐÂÆÀÂÛ¹²ÓÐ 0 Î»ÍøÓÑ·¢±íÁËÆÀÂÛ
·¢±íÆÀÂÛ
ÆÀÂÛÄÚÈÝ£º²»Äܳ¬¹ý250×Ö£¬ÐèÉóºË£¬Çë×Ô¾õ×ñÊØ»¥ÁªÍøÏà¹ØÕþ²ß·¨¹æ¡£
Óû§Ãû£º ÃÜÂ룺
ÄäÃû?
×¢²á
ÔÞÖúÉÌÁ¬½Ó