请教一个PHP4操作XML的问题 simpleXML,可能解析xml.如果你要修改的话,哪文件操作,读取,正则,保存! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://www.w3school.com.cn/php/php_ref_simplexml.asp看这里 没用过SimpleXML哦,给贴个代码参考下吗 function _parseXML($strXML){ require_once "xmlParser.inc.php"; $xml = new xmlParser(); $xml->parseString($strXML); $tree = $xml->getTree(); unset($xml); return $tree;}函数返回xml结点的数组,var_dump后,自己照着再获取就OK了. 晕,发的是xmlParse.simpleXML的,直接参考手册就OK了,例子超级多. 首先感谢jakey9826 ,但我用simpleXML一直搞不定啊,那位好心的人把代码贴出来啊 simpleXMLRequirementsThe SimpleXML extension requires PHP 5. simpleXML只能用在php5上面. $dom = domxml_open_file('demo.xml');$em = $dom->get_elements_by_tagname('TreeNodes');$em = $em[0];$items=$em->get_elements_by_tagname('TreeNode');foreach ($items as $a){ if ($a->get_attribute('value')==$gradevalue) echo $a->get_attribute('Desc');} 看php的手册把,php4要麻烦点,你也可以google,很多类的 感谢wisword,但是问题还是没有解决,Fatal error: Call to undefined function: domxml_open_file() 我想到了一个方法可行,就是利用正则取出来放到数组里,无奈我不会用正则啊,哪位好心的大哥用正则的方法帮我写段代码啊 大虾帮忙一下谢谢! 文件有三个 三个分别是aa.php ; bb.xml ; cc.xml ; 我想只要点aa.php 就把bb.xml 里面的内容覆盖 cc.xml ; cc.xml里面全是bb.xml内容了。 在线等,谢谢! Fatal error: Call to undefined function: domxml_open_file() =================================================这是因为没有启用dom xml扩展,configure的时候加上 --with-dom,windows的话extension=php_dom_xml.dll正则=========================preg_match_all("/<TreeNode\s+Desc=\"(.+)\"\s+Value=\"(.+)\"\s*\/?>/",file_get_contents('demo.xml'),$rs);var_dump($rs); preg_match_all("/<TreeNode\s+Desc=\"(.+)\"\s+Value=\"(.+)\"\s*\/?>/",file_get_contents('demo.xml'),$rs); 前面粘贴的时候多了一个空格 原来/与<之间的这个空格是csdn加上的 <?php$file=bb.xml;function startElement($parser, $name, $attrs){ if (count($attribs)) { foreach($attrs as $key => $value) { if($key=="Value" && $value=="a" ) { echo $attrs["Desc"]; } } } }function endElement($parser, $name){}function characterData($parser, $data){ echo $data;}$xml_parser = xml_parser_create();// 使用大小写折叠来保证我们能在元素数组中找到这些元素名称xml_parser_set_option($xml_parser, XML_OPTION_CASE_FOLDING, true);xml_set_element_handler($xml_parser, "startElement", "endElement");xml_set_character_data_handler($xml_parser, "characterData");if (!($fp = fopen($file, "r"))) { die("could not open XML input");}while ($data = fread($fp, 4096)){ if (!xml_parse($xml_parser, $data, feof($fp))) { die(sprintf("XML error: %s at line %d", xml_error_string(xml_get_error_code($xml_parser)), xml_get_current_line_number($xml_parser))); }}xml_parser_free($xml_parser);?> 感谢wisword的细心回答,用preg_match_all("/ <TreeNode\s+Desc=\"(.+)\"\s+Value=\"(.+)\"\s*\/?>/",file_get_contents('demo.xml'),$rs); 取出来的结果是这样的:array(3) { [0]=> array(4) { [0]=> string(38) "" [1]=> string(36) "" [2]=> string(38) "" [3]=> string(42) "" } [1]=> array(4) { [0]=> string(8) "11111111" [1]=> string(8) "22222222" [2]=> string(8) "33333333" [3]=> string(8) "44444444" } [2]=> array(4) { [0]=> string(1) "a" [1]=> string(1) "b" [2]=> string(3) "b-1" [3]=> string(5) "b-1-1" } } 可是怎么按要求取值出来呢,比如说我想找出与Value="b-1"对应的Desc的值,该怎么做呢 取Value='b-1'对应的Desc的值:for ($i=0;$i<count($rs[2]);$i++){ if ($r[2][$i]=='b-1') break;}echo $rs[1][$i]; 求版主提点,远程ftp下载 创建目录失败 怎么将你的搜索框里面的值绑定,当你点击提交按钮进行搜索的时候 用PHP在页面中加入一个静态网页链接(不知道这么问是否正确) 从数组中删除多个指定的元素 关于linux下apache+mysql+php的 安装问题,帮忙看看哪个步骤出错了(无法解析php) 专科,应届毕业生,想做PHP程序员是不是很难? 求助!用Zend Encoder加密过的php程序无法正常读出 讨论一下如何提高PHP代码的执行效率?! PHP中如何捕捉鼠标? 我不知道这个帖子该发到哪里去请各位原谅 PHP后台打印的问题!!! 关于获取目录下文件数的问题
看这里
function _parseXML($strXML)
{
require_once "xmlParser.inc.php";
$xml = new xmlParser();
$xml->parseString($strXML);
$tree = $xml->getTree();
unset($xml);
return $tree;
}函数返回xml结点的数组,var_dump后,自己照着再获取就OK了.
simpleXML的,直接参考手册就OK了,例子超级多.
simpleXML
Requirements
The SimpleXML extension requires PHP 5. simpleXML只能用在php5上面.
$em = $dom->get_elements_by_tagname('TreeNodes');
$em = $em[0];
$items=$em->get_elements_by_tagname('TreeNode');
foreach ($items as $a)
{
if ($a->get_attribute('value')==$gradevalue)
echo $a->get_attribute('Desc');
}
=================================================
这是因为没有启用dom xml扩展,configure的时候加上 --with-dom,windows的话extension=php_dom_xml.dll正则
=========================
preg_match_all("/<TreeNode\s+Desc=\"(.+)\"\s+Value=\"(.+)\"\s*\/?>/",file_get_contents('demo.xml'),$rs);
var_dump($rs);
前面粘贴的时候多了一个空格
<?php
$file=bb.xml;
function startElement($parser, $name, $attrs)
{
if (count($attribs))
{ foreach($attrs as $key => $value)
{
if($key=="Value" && $value=="a" )
{
echo $attrs["Desc"];
}
}
}
}function endElement($parser, $name)
{
}function characterData($parser, $data)
{
echo $data;
}$xml_parser = xml_parser_create();
// 使用大小写折叠来保证我们能在元素数组中找到这些元素名称
xml_parser_set_option($xml_parser, XML_OPTION_CASE_FOLDING, true);
xml_set_element_handler($xml_parser, "startElement", "endElement");
xml_set_character_data_handler($xml_parser, "characterData");
if (!($fp = fopen($file, "r")))
{
die("could not open XML input");
}while ($data = fread($fp, 4096))
{
if (!xml_parse($xml_parser, $data, feof($fp)))
{
die(sprintf("XML error: %s at line %d",
xml_error_string(xml_get_error_code($xml_parser)),
xml_get_current_line_number($xml_parser)));
}
}
xml_parser_free($xml_parser);
?>
array(3) { [0]=> array(4) { [0]=> string(38) "" [1]=> string(36) "" [2]=> string(38) "" [3]=> string(42) "" } [1]=> array(4) { [0]=> string(8) "11111111" [1]=> string(8) "22222222" [2]=> string(8) "33333333" [3]=> string(8) "44444444" } [2]=> array(4) { [0]=> string(1) "a" [1]=> string(1) "b" [2]=> string(3) "b-1" [3]=> string(5) "b-1-1" } }
可是怎么按要求取值出来呢,比如说我想找出与Value="b-1"对应的Desc的值,该怎么做呢
for ($i=0;$i<count($rs[2]);$i++)
{
if ($r[2][$i]=='b-1')
break;
}
echo $rs[1][$i];