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

原创 2005年04月24日 21:42:00

参考: 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);

?>

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

本例中的php文件读取、显示xml文件内容以下为php文件的内容,把该php文件和slashdot.xml放在同一个文件夹即可$open_tags = array(     STORY => ,   ...
  • guoguo1980
  • guoguo1980
  • 2006年06月25日 15:39
  • 979

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

本例中的php文件读取、显示xml文件内容以下为php文件的内容,把该php文件和slashdot.xml放在同一个文件夹即可$open_tags = array(     STORY => ,   ...
  • bighuang
  • bighuang
  • 2005年08月31日 18:30
  • 646

php读写XML文件

 =================================== 下面是一片比较好的、且很简单的读写XML的文章,在此转一下。 原文http://blog.sina.com.cn/s...
  • dusea
  • dusea
  • 2015年08月10日 20:39
  • 1100

PHP中利用simpleXML读取XML和追加XML节点

10000000 百度公司 10000001 新浪公司 准备一个XML class XML{ public $xmlpath = "CompanyList.xml";...
  • stary1
  • stary1
  • 2013年03月17日 20:03
  • 1958

PHP读取XML文件的三种方式

一  用 simplexml_load_file 读取xml文件  
  • libinemail
  • libinemail
  • 2015年12月24日 15:33
  • 644

XMl入门介绍及php操作XML

XML全称:Extensible Markup Language 中文名:可扩展标记语言 用于标记电子文件使其具有结构性的标记语言,可以用来标记数据,定义数据类型,允许用户对自己的标记语言进行定义的源...
  • jinxingfeng_cn
  • jinxingfeng_cn
  • 2016年05月17日 14:09
  • 2221

c#读取xml文件到datagridview中

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; ...
  • a771948524
  • a771948524
  • 2013年03月24日 09:20
  • 2908

XML(php中获取xml文件的方式/ajax获取xml格式的响应数据的方式)

1、XML 格式规范 2、php中获取xml文件的方式 3、ajax获取xml格式的响应数据的方式...
  • carriehaohao
  • carriehaohao
  • 2017年01月07日 12:43
  • 934

php读取xml中文乱码解决方法

php读取xml中文乱码解决方法
  • asp89007342
  • asp89007342
  • 2010年06月11日 10:28
  • 1524

PHP基于事件的XML解析工具类

XML解析 基于事件 PHP
  • pzqingchong
  • pzqingchong
  • 2017年04月01日 16:14
  • 570
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章: PHP 操作 XML 文件 - 读取、显示
举报原因:
原因补充:

(最多只允许输入30个字)