CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2SE / 基础类

用XML解析目录结构

楼主nitc(怪侠一枝梅)2005-07-07 11:07:04 在 Java / J2SE / 基础类 提问

请教各位,不知道用XML来解析目录结构,怎么样来处理  
  最好可以给段提示性的代码,谢谢 问题点数:50、回复次数:12Top

1 楼yyzh(答题容易分难得)回复于 2005-07-07 11:49:39 得分 15

是想把XML文件按树状结构显示在网页上么?  
  <script   language="javascript">  
  var   xnode   =   new   Array();  
  var   x   =   0;  
   
  function   SelectNodes(ev,   tn)  
  {  
  var   childs   =   ev.childNodes;  
  if   (childs==0)   return   0;  
  for   (var   i=0;i<childs.length;i++)  
  {  
  if   (childs[i].tagName==tn)   return   1;  
  }  
  return   0;  
  }  
   
  function   SelectSingleNode(ev,   tn)  
  {  
  var   childs   =   ev.childNodes;  
  if   (childs==0)   return   null;  
  for   (var   i=0;i<childs.length;i++)  
  {  
  if   (childs[i].tagName==tn)   return   childs[i];  
  }  
  return   null;  
  }  
   
  function   OpenElement(e_name,   e_id)  
  {  
  var   ev;  
  ev   =   document.getElementsByTagName(e_name);  
  for   (var   i=0;i<ev.length;i++)  
  {  
  if   (String(ev[i].id).toLowerCase()==String(e_id).toLowerCase())  
  return   ev[i];  
  }  
  var   nev   =   document.createElement(e_name);  
  nev.id   =   e_id;  
  document.body.insertAdjacentElement("beforeEnd",   nev);  
  return   nev;  
  }  
   
  function   OpenMenu(nodes)  
  {  
  var   ele   =   event.srcElement;  
  var   parentMenu   =   new   Object();  
  if   (ele.tagName=="xml")  
  {  
  parentMenu   =   OpenElement("div",   "xmenu");  
  }  
  else   if   (ele.tagName=="IMG"   ||   ele.tagName=="A")  
  {  
  parentMenu   =   ele.parentNode;  
  }  
  else   if   (ele.tagName=="DIV")  
  {  
  parentMenu   =   ele;  
  }  
  else  
  {  
  return;  
  }  
  if   (SelectNodes(parentMenu,   "DIV"))  
  {  
  //alert("123");  
  var   childs   =   parentMenu.childNodes;  
  var   display   =   "";  
  for   (var   i=0;i<childs.length;i++)  
  {  
  if   (childs[i].tagName=="DIV")  
  {  
  display   =   childs[i].style.display;  
  childs[i].style.display   =   (display=="none")?"":"none";  
  }  
  }  
  var   img   =   SelectSingleNode(parentMenu,   "IMG");  
  if   (img==null)   return;  
  img.src   =   (display=="none")?"menu1.gif":"menu0.gif";  
  }  
  else  
  {  
  var   childs   =   nodes.childNodes;  
  if   (childs.length==0)   return;  
  var   left   =   parseInt(parentMenu.style.left);  
  if   (isNaN(left))   left   =   0;  
  for   (var   i=0;i<childs.length;i++)  
  {  
  xnode[x]   =   childs[i];  
  var   menu   =   OpenElement("div",   "menu"   +   x);  
  parentMenu.insertAdjacentElement("beforeEnd",   menu);  
  menu.style.left   =   left   +   10;  
  menu.style.position   =   "relative";  
  menu.style.display   =   "";  
  if   (childs[i].hasChildNodes())  
  {  
  menu.innerHTML   =   '<img   src="menu0.gif"   onclick="OpenMenu(xnode['   +   x   +   '])"   style="cursor:hand"   />   <a   href="javascript:"   onclick="OpenMenu(xnode['   +   x   +   '])">'   +   childs[i].getAttribute("name")   +   '</a>';  
  }  
  else  
  {  
  menu.innerHTML   =   '<img   src="menu1.gif"   />   <a   href="javascript:">'   +   childs[i].getAttribute("name")   +   '</a>';  
  }  
  x++;  
  }  
  var   img   =   SelectSingleNode(parentMenu,   "IMG");  
  if   (img==null)   return;  
  img.src   =   "menu1.gif";  
  }  
  }  
  </script>  
   
  <script   language="javascript"   for="menuxml"   event="onreadystatechange">  
  var   xmenu   =   OpenElement("div",   "xmenu");  
  var   state   =   this.readyState;  
  switch   (state)  
  {  
  case   "complete":  
  xmenu.innerHTML   =   "";  
  if   (this.parseError.errorCode)  
  {  
  alert("HOHO:"   +   this.parseError.reason);  
  }  
  else  
  {  
  var   root   =   this.documentElement;  
  OpenMenu(root);  
  }  
  break;  
  default:  
  xmenu.innerHTML   =   state;  
  break;  
  }  
  </script>  
  </head>  
   
  <body>  
  <xml   id="menuxml"   src="xmenu.xml"></xml>  
  <div   id="hint"></div>  
  </body>  
   
  </html>  
  -----------------------------------------------------------------------------  
  <?xml   version="1.0"?>  
  <menu>  
  <menu   name="User   Manager   0">  
  <menu   name="Profile   Manager"   />  
  <menu   name="Password   Manager"   />  
  <menu   name="User   Liste"   />  
  <menu   name="User   Manager   1">  
  <menu   name="Profile   Manager"   />  
  <menu   name="Password   Manager"   />  
  <menu   name="User   Liste"   />  
  <menu   name="User   Manager   2">  
  <menu   name="User   Liste"   />  
  <menu   name="User   Liste"   />  
  </menu>  
  </menu>  
  </menu>  
  <menu   name="User   Manager">  
  <menu   name="Profile   Manager"   />  
  <menu   name="Password   Manager"   />  
  <menu   name="User   Liste"   />  
  </menu>  
  <menu   name="User   Manager">  
  <menu   name="Profile   Manager"   />  
  <menu   name="Password   Manager"   />  
  <menu   name="User   Liste"   />  
  </menu>  
  <menu   name="User   Manager">  
  <menu   name="Profile   Manager"   />  
  <menu   name="Password   Manager"   />  
  <menu   name="User   Liste"   />  
  </menu>  
  <menu   name="User   Manager">  
  <menu   name="Profile   Manager"   />  
  <menu   name="Password   Manager"   />  
  <menu   name="User   Liste"   />  
  </menu>  
  <menu   name="User   Manager">  
  <menu   name="Profile   Manager"   />  
  <menu   name="Password   Manager"   />  
  <menu   name="User   Liste"   />  
  </menu>  
  </menu>Top

2 楼nitc(怪侠一枝梅)回复于 2005-07-07 12:02:52 得分 0

不是亚,,,是用java把他生成XMLTop

3 楼humanity(城市边缘的狼)回复于 2005-07-07 13:22:50 得分 1

那不是更简单,  
  JDOM   是比较简单的   XML   API.Top

4 楼nitc(怪侠一枝梅)回复于 2005-07-07 14:07:13 得分 0

可是要取得目录下所有的文件元素阿,,,,Top

5 楼nitc(怪侠一枝梅)回复于 2005-07-07 14:48:10 得分 0

大家帮帮忙啊  
  就是某个目录结构,,把他生成XML文件  
  比如目录A下有文件1,2,3,文件夹B,B里有文件3,4,5  
  生成XML  
  <dir   name="A">  
  <file   name="1"></file>  
  <file   name="2"></file>  
  <file   name="3"></file>  
  <dir   name="B">  
  <file   name="3"></file>  
  <file   name="4"></file>  
  <file   name="5"></file>  
  </dir>  
  </dir>Top

6 楼nitc(怪侠一枝梅)回复于 2005-07-07 15:40:21 得分 0

大家帮帮忙啊  
  就是某个目录结构,,把他生成XML文件  
  比如目录A下有文件1,2,3,文件夹B,B里有文件3,4,5  
  生成XML  
  <dir   name="A">  
  <file   name="1"></file>  
  <file   name="2"></file>  
  <file   name="3"></file>  
  <dir   name="B">  
  <file   name="3"></file>  
  <file   name="4"></file>  
  <file   name="5"></file>  
  </dir>  
  </dir>  
  Top

7 楼yyzh(答题容易分难得)回复于 2005-07-07 15:53:23 得分 0

import   org.jdom.Document;  
  import   org.jdom.Element;  
   
  Element   root   =   new   Element("root");  
  Element   dir=   new   Element("dir");  
  dir.setAttribute("name","A");  
  Element   file=   new   Element("file");  
  file.setAttribute("name","1");  
  dir.addContent(file);  
  root.addContent(dir);  
  Document   doc   =   new   Document(root);Top

8 楼rower203(华仔)回复于 2005-07-07 15:56:09 得分 1

不难,自己不做!?  
  多加些分给你做一个?Top

9 楼nitc(怪侠一枝梅)回复于 2005-07-07 16:16:27 得分 0

呵呵,,主要从把目录结构用读出来的那段,这段我也知道Top

10 楼nitc(怪侠一枝梅)回复于 2005-07-07 16:18:20 得分 0

从目录结构用java操作读到Collection   API   ,然后用这个就容易了,,关键是第一步Top

11 楼rower203(华仔)回复于 2005-07-07 16:24:02 得分 33

 
          public   static   void   createXMLForFolder(PrintStream   xmlFile,   String   s){  
                  File   io   =   new   File(s);  
                  if   (io.isDirectory())   {  
                  xmlFile.println("<dir   name=\""   +   s   +   "\">");  
                  File[]   file   =   io.listFiles();  
                  for   (int   i   =   0;   i   <   file.length;   i++)   {  
                  createXMLForFolder(xmlFile,   file[i].getPath());  
                  }  
                  xmlFile.println("</dir>");  
                  }  
                  else   {  
                  xmlFile.println("\t<file   name=\""   +   io.getPath()   +   "\"></file>");  
                  }  
          }  
       
          public   static   void   main(   String[]   args   )   throws   FileNotFoundException  
          {                
  PrintStream   xmlFile   =   new   PrintStream(new   FileOutputStream("Folder.xml",   false));  
          createXMLForFolder(xmlFile,   "aa");  
          xmlFile.close();  
          }  
  很简单。Top

12 楼nitc(怪侠一枝梅)回复于 2005-07-07 16:28:34 得分 0

我应该早想到了,,,,哎,,还是思考不够,,谢谢你大虾,,,交个朋友Top

相关问题

  • 如何改进自己编写的XML解析器的数据结构
  • xml解析
  • xml解析
  • PHP解析XML
  • 哪位高手有类似msdn目录结构的xml与asp源程序?
  • 如何解析XML?
  • 如何解析xml!!!!
  • sun xml解析器
  • 解析xml文件。
  • 关于xml解析

关键词

得分解答快速导航

  • 帖主:nitc
  • yyzh
  • humanity
  • rower203
  • rower203

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo