<note>
<name>简庆旺</name>
<address>福建省漳州市南靖县梅林镇官洋村</address>
<tel>17095921320</tel>
<code>363609</code>
<school>
<highschool>
<name>
<name1>
<he>hehe</he>
</name1>
<name2>不好</name2>
</name>
<address>福建省龙岩市永定区91路</address>
</highschool>
<university>
<name>吉首大学</name>
<address>湖南省吉首市人民南路120号</address>
</university>
</school>
</note>
php部分::
<?php
header('Content-type:text/html;charset=utf-8');
echo '<pre>';
$xml = simplexml_load_file("test1.xml");
echo '根目录:'.$xml->getName() . "<hr />";
//var_dump($xml);
function redxml($xml){
foreach($xml->children() as $child)
{
static $num=1;
$chileName = $child ->getName();
echo $num.'级目录:'.$chileName.'->'.(trim($xml -> $chileName).'<br/>');
//var_dump($xml -> $chileName,'<br/>');
if(trim($xml -> $chileName)==''){
echo '<hr/>';
$num++;//计算数据是几级目录
redxml($xml -> $chileName);
$num--; //与无极限分类类似,执行一次同级的目录需要使目录级数减少1
}
}
}
redxml($xml);
利用递归代码可以实现xml文件的全部信息读取,并且显示数据所在的相应的结构级数。
改进的php代码::
<?php
header('Content-type:text/html;charset=utf-8');
echo '<pre>';
$xmll = simplexml_load_file("test1.xml");
$check = false;
echo '根目录:'.$xmll->getName() . "<hr />";
//var_dump($xml);
function redxml($xml,$attr1=''){
global $xmll;
global $check;
foreach($xml->children() as $child)
{
if($check == true){
if($attr1==''){
static $attr = '$xmll';;
}else{
$attr = $attr1;
}
}else{
$attr = '$xmll';
}
static $num=1;
$chileName = $child ->getName();
echo $num.'级目录:'.$chileName.'<br/>';
echo '级目录链表:'.$attr.='->'.$chileName;
echo '<br/>';
//echo '末级属性2:'.$attr."['name']".'<br/>';
echo $attr3 = $attr."['name']".';';
echo '<br/>';
//echo "$attr3";
echo '级属性值:<br/>';
eval($attr3);
if(trim($xml -> $chileName)){
echo '目录值:'.trim($xml -> $chileName).'<br/>';
echo '<br/>';
}else{
echo '目录值:null'.'<br/>';
echo '<br/>';
}
if(trim($xml -> $chileName)==''){
//echo '<hr/>';
$check = true;
$num++;//计算数据是几级目录
//echo '执行对象:'.$attr.'<br/>';
redxml($xml -> $chileName,$attr);
//echo '这是在哪里执行的<hr/>';
$num--; //与无极限分类类似,执行一次同级的目录需要使目录级数减少1
}
}
}
redxml($xmll);
目前xml属性值还未读取成功,,php字符转换代码执行报错, 暂时找不到原因。