高分求XML解析

longyear 2006-05-24 12:04:24
怎样解析这样的XML

<object>
<basic>
<name>test</name>
</basic>
<other>
<string>other_nameA</string>
<string>other_nameA_value</string>
<string>other_nameB</string>
<int>other_nameB_value</int>
</other>
<other>
<string>other_nameC</string>
<string>other_nameC_value</string>
<string>other_nameD</string>
<int>other_nameD_value</int>
</other>
</object>
...全文
280 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
tovy 2006-05-25
  • 打赏
  • 举报
回复
function->xml_read.php


<?
function trustedFile($file)
{
// only trust local files owned by ourselves
if (!eregi("^([a-z]+)://", $file)
&& fileowner($file) == getmyuid()) {
return true;
}
return false;
}

function startElement($parser, $name, $attribs)
{
global $xml_temp_node,$xml_count;
if($name=="ITEM") $xml_count++;
$xml_temp_node=strtolower($name);
}

function endElement($parser, $name)
{
global $xml_temp_node;
$xml_temp_node="ITEM";
}

function characterData($parser, $data)
{
global $xml_result_array,$xml_temp_node,$xml_count;
if($xml_count!=-1 && $xml_temp_node!="ITEM") $xml_result_array[$xml_temp_node][$xml_count]=$data;
else
{
if($xml_temp_node!="ITEM") $xml_result_array["info"]["$xml_temp_node"]=$data;
}
}

function new_xml_parser($file)
{
global $parser_file;

$xml_parser = xml_parser_create();
xml_parser_set_option($xml_parser, XML_OPTION_CASE_FOLDING, 1);
xml_set_element_handler($xml_parser, "startElement", "endElement");
xml_set_character_data_handler($xml_parser, "characterData");
xml_set_processing_instruction_handler($xml_parser, "PIHandler");
xml_set_external_entity_ref_handler($xml_parser, "externalEntityRefHandler");

if (!($fp = @fopen($file, "r"))) {
return false;
}
if (!is_array($parser_file)) {
settype($parser_file, "array");
}
$parser_file[$xml_parser] = $file;
return array($xml_parser, $fp);
}
function xml_read($file)
{
if (!(list($xml_parser, $fp) = new_xml_parser($file)))
{
die("could not open XML input");
return;
}

while ($data = fread($fp, 4096))
{
xml_parse($xml_parser, $data, feof($fp));
}
xml_parser_free($xml_parser);
}
?>







-> use

<?
require_once('xml_read.php');

$xml_result_array=array();
$xml_temp_node;
$xml_count=-1;

$file='test.xml';
xml_read($file);

print_r(array_values($xml_result_array)); //输出结果

//->结果就保存在 $xml_result_array 中
?>

  • 打赏
  • 举报
回复
IBM上面有文章讲的很详细:
http://www-128.ibm.com/developerworks/cn/opensource/os-xmldomphp
iasky 2006-05-24
  • 打赏
  • 举报
回复
MagpieRSS

21,893

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧