Php 解析 Xml Dom

创作人 Leo


编辑时间 Wed Jan 1,2020 at 10:13


Php 解析 Xml Dom

注意:节点属性中不能包含&符号

例:(遍历dom节点)

$dom=new DOMDocument;   //实例化DOM对象
$dom->load('xr.xml'); //使用load方法加载XML文件
$root=$dom->getElementsByTagName('members');    //获取根节点
$root=$root->item(0);   //获取第一个$root
//var_dump($root);
$userid=$dom->getElementsByTagName('member');   //获取member标签
//echo 'PHP解析XML文档';
echo '<table border="1" width="800" height="300">
          <tr>
        <td>文件名</td>
        <td>类型</td>
        <td>大小</td>
        <td>ed2k链接</td>
        </tr>';
$i=0;
foreach($userid as $temp){
    $a=$temp->getElementsByTagName('name');   //获取<no></no>标签
    $name=$a->item(0)->nodeValue;
 
    $b=$temp->getElementsByTagName('type'); 
    $name=$b->item(0)->nodeValue;
 
    $c=$temp->getElementsByTagName('size');
    $power=$c->item(0)->nodeValue;
 
    $d=$temp->getElementsByTagName('ed2k'); 
    $magic=$d->item(0)->nodeValue;
     
}
?>

例:(按层次读取菜单)


<?xml version="1.0" encoding="UTF-8"?>
<root>
<column name="统计数据" img="/admin/images/menu-item-1.png" >
     <module name="用户分析" id="user-counter">
          <item name="注册用户" module="Counter" action="userRegister" param="type=1" on="true" ></item>
          <item name="活跃用户" module="Counter" action="userActive" param="type=1" ></item>
          <item name="死亡用户" module="Counter" action="userDied" param="type=1" ></item>
     </module>
     <module name="帖子分析" id="market-counter">
          <item name="新帖子" module="Market" action="marketNew" param="type=1" on="true" ></item>
          <item name="回复" module="Market" action="comment" param="type=1" ></item>
     </module>
     <module name="访问分析" id="visit-counter">
          <item name="注册用户访问统计" module="Visit" action="memberUser" param="type=1" on="true" ></item>
          <item name="匿名用户访问统计" module="Visit" action="memberUser" param="type=1#nologin=1" ></item>
     </module>
</column>
<column name="用户管理" img="/admin/images/menu-item-3.png" >
     <module name="添加用户" id="user-add">
          <item name="添加用户" module="User" action="addUser" param="" on="true" ></item>
     </module>
     <module name="反馈信息" id="user-say">
          <item name="意见反馈" module="User" action="opinionList" param="" on="true" ></item>
          <item name="举报" module="User" action="informList" param="" ></item>
          <item name="纠错" module="User" action="errorList" param="" ></item>
     </module>
</column>
<column name="活动管理" img="/admin/images/menu-item-5.png">
     <module name="发起活动" id="market-add">
          <item name="发帖" module="Market" action="marketAdd" param="" on="true" ></item>
     </module>    
     <module name="经销商大会" id="tmp">
          <item name="专题页报名" module="Tmp" action="webApply" param="" on="true" ></item>
          <item name="获奖用户" module="Tmp" action="listPrizeUser" param="" ></item>
     </module>    
</column>
<column name="管理员专区" img="/admin/images/menu-item-5.png" >
     <module name="入口管理" id="entry-admin" >
          <item name="页面管理" module="Admin" action="entry" param="" on="true" ></item>
     </module>
     <module name="商情标签管理" id="mtay-admin" >
          <item name="标签管理" module="Admin" action="marketTag" param="" on="true" ></item>
     </module>
     <module name="系统配置" id="config-admin" >
          <item name="修改配置" module="Admin" action="config" param="" on="true" ></item>
          <item name="启动界面" module="Admin" action="launchConfig" param="" ></item>
     </module>
     <module name="版本升级" id="upversion-admin" >
          <item name="版本升级" module="Admin" action="upVersion" param="" on="true" ></item>
     </module>
     <module name="权限管理" id="rule-admin" >
          <item name="权限列表" module="Admin" action="listRule" param="" on="true" ></item>
          <item name="特权列表" module="Admin" action="listPrivilege" param="" ></item>
     </module>
</column>
</root>


     public function index(){
          
          $itemArr = array();
          
          //读取xml菜单数据
          
          $dom = new DOMDocument();
          $dom->load($this->adminMenuFile);
          
          $root = $dom->getElementsByTagName('root');
          
          $root = $root->item(0);
          
          $columnEle = $dom->getElementsByTagName('column');
          
          foreach ($columnEle as $column){
               
               //读取大模块列表
               $column_attrs = $column->attributes;
               
               $_data['title'] = $column_attrs->getNamedItem('name')->value;
               $_data['img'] = __THEME__.$column_attrs->getNamedItem('img')->value;
               $_data['items'] = array();
               
               $moduleEle = $column->getElementsByTagName('module');
               
               foreach ($moduleEle as $module){
                    //读取子模块列表
                    
                    $module_attrs = $module->attributes;
                    
                    $_dModule['name'] = $module_attrs->getNamedItem('name')->value;
                    
                    $_url_module = $module_attrs->getNamedItem('module')->value;
                    $_url_action = $module_attrs->getNamedItem('action')->value;
                    $_url_param = $module_attrs->getNamedItem('param')->value;
 
                    $_dModule['url'] = U(array('m'=>$_url_module, 'a'=>$_url_action,'p'=>$_url_param));
                    
                    $_dModule['id'] = $module_attrs->getNamedItem('id')->value; //js操作内容框架跳转时的id参数,用来在ajax中搜索item节点子菜单
                    
                    array_push($_data['items'], $_dModule);
               }
               
               array_push($itemArr, $_data);
               
          }
 
          $this->assign('itemArr', $itemArr);
          $this->assign('adminInfo', $this->adminInfo);
          $this->show('index');
          
     }


阅读:794
搜索
  • Linux 高性能网络编程库 Libevent 简介和示例 2578
  • web rtc 学习笔记(一) 2355
  • Mac系统编译PHP7【20190929更新】 2304
  • react 学习笔记(一) 2245
  • zksync 和 layer2 2237
  • Hadoop 高可用集群搭建 (Hadoop HA) 2182
  • Hadoop Map Reduce 案例:好友推荐 2151
  • 小白鼠问题 2085
  • Linux 常用命令 2082
  • 安徽黄山游 2058
简介
不定期分享软件开发经验,生活经验