xml文件的读取(多级)

<?xml version="1.0" encoding="utf-8"?>
<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字符转换代码执行报错, 暂时找不到原因。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值