首页 > php教程 > php手册 > 正文

PHP 操作 XML 文件:读取、显示

php中文网
发布: 2016-06-21 08:59:08
原创
1114人浏览过
本例中的php文件读取、显示xml文件内容

以下为php文件的内容,把该php文件和slashdot.xml放在同一个文件夹即可

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

//下面就是定义函数来提取数据:

// 处理开始标记的属性指
// $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函数中使用
//
// 当遇到标记时我们知道要flush所有的临时变量准备操作下一个标记
'
,
    
'TITLE' => ''
,
    
'URL' => ''
,
'AUTHOR'=>
''
);
?>

//下面就是定义函数来提取数据:

// 处理开始标记的属性指
// $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函数中使用
//
// 当遇到标记时我们知道要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 Here,$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;
    }
}
?>  



function return_page
(){
    global
$temp
;
    echo
'o .$temp['url'].'">'.$temp['title'].'
'
;
echo
'Author:'.$temp['author'].'
'
;
echo
'-----------------------------'
;
echo
'
'
;
}

// 分析的内容
$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
);

?>



PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号