php 读xml的问题。在线等,谢谢 其实10,100,1000也是win的属性值,是value属性值 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 以下为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); ?>即便是,也可以先删除其中的换行符后再处理$data = preg_replace("/[\t\r\n]+/","",$data); 谢谢如果我想根据它的ID来读数据,怎么读,我只想显示id=1的数据,不是全部都显示出来 php 读取word内容 将多个一维数组转换成一个二维数组,并求出[2]项值的个数。 这种表单是如何完成提交的 求个MYSQL语句按某字段值的和倒序排列 PHP 批量删除??? mysql语句实现更新字段A=字段B&字段C 生成缩略图程序 在IIS下配置php,代码执行时间太长,有什么解决办法?或者有什么地方需要设置一下 求救:MySQL数据导入导出问题!!!我发现MySQL里的中文不能用直接的中文表示,导出之后还是用什么� 表示,请问怎样才能正常导出; 为什么就是查不到第一条数据????? 为什么我一用PHPMYADMIN连接MYSQL就锁死数据库? 请教:mail函数使用
$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); ?>即便是,也可以先删除其中的换行符后再处理
$data = preg_replace("/[\t\r\n]+/","",$data);
如果我想根据它的ID来读数据,怎么读,我只想显示id=1的数据,不是全部都显示出来