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

转载 2006年06月25日 15:39:00
本例中的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
);

?>

c#读取xml文件到datagridview中

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

c#如何实现从xml中加载树目录,并且显示完整的Text

谈到xml,相信有一定编程基础的童鞋们都比较清楚了。xml文件格式类似于嵌套的样式,这种独特的层次结构很容易使我们联想到目录树,因此这不禁让我们对两者之间产生一种牵线的想法。这不禁,使我们有这么一个问...
  • ztzi321
  • ztzi321
  • 2015年03月05日 08:35
  • 2384

opencv下XML 文件的读写 很全滴

[cpp] view plaincopy "font-family: Arial, Helvetica, sans-serif; font-size: 12px; bac...
  • zkl99999
  • zkl99999
  • 2015年06月11日 22:02
  • 5137

介绍两个 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
  • 208

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

方便 以后操作xml文件,写的类,未完全测试,有问题我会修正 using System; using System.Collections.Generic; using System....
  • jilong17
  • jilong17
  • 2013年12月15日 23:56
  • 481

org.w3c.dom 对XML 文件的操作

利用org.w3c.dom来操作xml文件相当的简单,今天自己简单的练习了一下。 import java.io.File; import java.io.FileOutputStream; ...
  • fdf0823
  • fdf0823
  • 2013年12月24日 14:43
  • 557

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

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

C# 操作 xml 文件

//默认密钥向量         private static byte[] Keys = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };  ...
  • wensibo
  • wensibo
  • 2012年02月15日 15:31
  • 420
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:PHP 操作 XML 文件 - 读取、显示
举报原因:
原因补充:

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