PHP 操作 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所有的临时变量准备操作下一个标记
<lt;/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);

?>

时间: 2024-09-02 09:09:13

PHP 操作 XML 文件:读取、显示的相关文章

JavaScript操作XML文件之XML读取方法

 本文实例讲述了JavaScript操作XML文件之XML读取方法.分享给大家供大家参考.具体分析如下: 假设我们现在要读取下面的 info.xml 文件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 <?xml version="1.0" encoding="gb2312"?> <root> <data id="1"> <name

dataset-c#中读取目录树xml文件并显示到dataGridView中

问题描述 c#中读取目录树xml文件并显示到dataGridView中 读取xml,但是出来的表格各级目录的位置不对应,差一行 是因为我每列都创建了一个新的datarow,我想问问怎么能够读出来都对应整齐? 还有就是如果我不清楚这个xml目录树文件有几个等级 ,怎么用程序自动读出来并建立列,现在都是我手动建立的? 本人菜鸟一枚,正在学习中,还望大神们帮助~ 这是xml文件的结构图 资源目录是一级目录,floderlist中是剩下的各级目录,每个都有FolderCode和FolderParentC

XML文件的显示——CSS和XSL

css|xml|显示 CSS(叠层样式表)和XSL(可扩展样式语言)都可以定义XML文件的显示,这两种方式有哪些不同以及它们在使用中的具体方法,我们将在本文给予介绍. 在XML文件中,使用的基本上是自定义的标记,显然一个浏览器是无法理解这些标记的,现在,浏览器仅仅是作为一个XML文件的解析器--只要你的XML文件是Well-Formed的,那么它就将文件原封不动地给你显示出来.在XML中内容与表现形式是分开的,在一个XML的源文件中并没有关于它表现形式的信息.XML的最大特点就是揭示了信息本身的

JDOM操作XML文件(法老修正版)

dom|xml 原文:JDOM操作XML文件地址:http://www.jspcn.net/htmlnews/200120272.html---------------------------------------------------------------------------    这篇文章讲的不错~把JDOM的基本操作实例化了,不过由于当时的作者用的JDOM版本还比较陈旧,所以部分代码会编译出错!支持中文也不好!所以,法老在原作者的基础上对程序做了修改!休正了编译出错以及中文乱码的

DOM操作XML文件

使用DOM方式操作XML文件,即是和DOM树打交道的过程:在构建XML文件时,首先构建一棵DOM树,然后将该树状结构写成XML文件:在解析XML文件时,首先将源XML文件解析成一棵DOM树,然后遍历这棵DOM树.或从DOM树中查找需要的信息. 关于DOM树中节点类型.不同节点具有的接口.特性.限制等信息可以参考<DOM树节点解析>,本文只关注如何构建XML文件与解析XML文件.在构建和解析XML文件中,都以w3school中的books.xml文件的内容为例: <?xml version

utf-8-c# 操作xml文件进行修改 请看下面代码

问题描述 c# 操作xml文件进行修改 请看下面代码 这是一个app.xml文件中的 <?xml version="1.0" encoding="utf-8"?> <appSettings> <appSetting key="张三" value="1" notes="上次读取到的表面位移模块当前月数据表的记录DataID字段值" /> <appSetting key

c# xml-关于C# 操作XML文件问题

问题描述 关于C# 操作XML文件问题 10C 1.如何将SQL返回的DataTable生成如下格式? <?xml version=""1.0"" standalone=""yes""?><SPDHSet> <Table TitleId=""1""> <GoodID>0401020014</GoodID> <FactCod

ASP XMLDom在服务器端操作XML文件的主要方法和实现_应用技巧

对于小数据量,xml文件在检索更新上于ACCESS有很多优势. 我曾经测试过不用数据库,把网站的会员信息,商品数据信息,交易信息,网站定制信息全部存放在三个xml文件中,运行结果十分正常,感觉上比数据库快多了,不过没有作测试,不能确定. 下面说一下创建,查询,修改等对xml操作的主要方法 程序代码 NO.1--建立一个XML数据库data.xml 复制代码 代码如下: <?xml version="1.0"?> <records> <record>

js操作XML文件的实现方法兼容IE与FireFox_javascript技巧

最近项目中用到了xml,需求是用户安装产品时先把一系列的数据保存到xml文件中,当执行到最后一步时才写入数据库,这样最大限度的减少了数据库的访问,于是不得不纠结在各浏览器的兼容性的问题(悲哀啊....) 进入正文 下面是一个xml文件 (createInstal.xml) <?xml version="1.0" encoding="utf-8"?> <info> <Item> <id descrption="级别&

ASP通过XMLDom在服务器端操作XML文件的主要方法和实现。

dom|xml|服务器 对于小数据量,xml文件在检索更新上于ACCESS有很多优势. 我曾经测试过不用数据库,把网站的会员信息,商品数据信息,交易信息,网站定制信息全部存放在三个xml文件中,运行结果十分正常,感觉上比数据库快多了,不过没有作测试,不能确定.(http://stone.yesku.net) 下面说一下创建,查询,修改等对xml操作的主要方法 '创建DOM对象set objDom=server.CreateObject("MicroSoft.XMLDom") '取得xm