PHP 操作 XML 文件 - 读取、显示
来源:百度文库 编辑:神马文学网 时间:2024/04/29 00:36:19
本例中的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[‘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文件和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;
}
}
}
// 传送给此函数的是元素间的数据
// 例如,对
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[‘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 操作 XML 文件 - 读取、显示
用PHP读取和编写XML DOM
用 PHP 读取文件的正确方法
用 PHP 读取文件的正确方法
JR 精品文章 - 利用jdom实现读取数据库生成XML及读取XML文件插入数据库
JAVA读取文件时,怎么显示里面的换行效果
用PHP读取和编写XML DOM -- PHP China-中国PHP开源技术|新闻|软件|服务|培训|支持|产品|Zend官方论坛网站
Java的XML文件操作之DOM入门篇
Java的XML文件操作之DOM入门篇
MFC文件读取1
PHP读取Excel的每行记录 - ~@
MFC文件读取2L
怎样在C#里对xml文件进行修改,新增,删除,插入操作?
XJL:XML文件处理
XJL:XML文件处理
php上传文件
PHP操作数据库详解
定义xml为drawable文件并根据状态改变显示的图片资源 - sodino的专栏 - CSDN博客
javascript窗口淡入淡出效果和读取xml
javascript窗口淡入淡出效果和读取xml
vb读取txt文件至textbox
如何读取损坏光盘内的文件
如何读取损坏光盘内的文件
perl几个读取文件命令测试比较