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);

?>

介绍两个 XML 文件操作类

  • 2011年12月25日 12:52
  • 50KB
  • 下载

XML 文件操作

  • 2012年03月30日 15:22
  • 20KB
  • 下载

php下使用SimpleXML 处理XML 文件

本文为大家讲解的是php下使用SimpleXML 处理XML 文件的示例代码,感兴趣的同学参考下。 要处理XML 文件,有两种传统的处理思路:SAX 和DOM。 1 SimpleXML 简介 ...
  • hhkiss1
  • hhkiss1
  • 2015年01月09日 12:46
  • 192

c# 操作 xml 文件的 自定义类

方便 以后操作xml文件,写的类,未完全测试,有问题我会修正 using System; using System.Collections.Generic; using System....

MFC学习笔记之XML 文件操作类

可扩展标记语言XML(Extend Mark Language)是一种描述数据和数据结构的语言,XML数据可以保存在任何可以存储文本的文档中。HTML用来描述外观,而XML从一开始就被设计为表示原始信...

C# 操作 xml 文件

//默认密钥向量         private static byte[] Keys = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };  ...
  • wensibo
  • wensibo
  • 2012年02月15日 15:31
  • 409

QT xml 文件操作与 文件复制

config.xml文件用于更新时检测是否有新的文件需要更新。

利用 Qt 读取 XML 文件的方法

XML 是可扩展标记语言(Extensible Markup Language)的缩写。XML 文件由内容和标记组成,通过以标记包围内容的方式将大部分内容包含在元素中。 Qt 中提供了多种读取XML文...

通过XMLReader 读取服务器的xml 文件(通过sax2)

本文通过参考http://www.iteye.com/topic/763895 网站 通过读本地磁盘取得xml 可以参考  http://www.iteye.com/topic/763895网站  ...

Delphi 中的 XMLDocument 类详解(3) - 读取 xml 文件

先虚拟一个测试文件: test.xml; 放在 c:\temp\ 下备用. <?xml version="1.0" encoding="gb2312"?> <科室名单 备注="测试"...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章: PHP 操作 XML 文件 - 读取、显示
举报原因:
原因补充:

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