- 浏览: 158628 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
wcnmbbbb:
com.lowagie.text 对应的包呢?
根据数据库注释自动生成数据库文档【支持Oracle和Mysql】 -
greatwqs:
序列化算法这篇不错 : http://greatwqs.ite ...
Java IO 中对象的序列化操作 -
litao11046:
为什么使用get的时候要把具体的方法名加入hidden作为隐藏 ...
Struts DispatchAction基本的请求分发
使用递归逆推出xml文件的大体结构
package com.dowebber.xmlreader; import java.io.File; import java.io.IOException; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import org.w3c.dom.Document; import org.w3c.dom.NamedNodeMap; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.xml.sax.SAXException; public class RecursionBasedDomXmlParser { public static void main(String[] args) { DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); try { DocumentBuilder builder = dbf.newDocumentBuilder(); Document doc = builder.parse("src/xml/employee.xml"); doc(doc); } catch (ParserConfigurationException e) { e.printStackTrace(); } catch (SAXException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } private static void doc(Document doc){ NodeList list = doc.getChildNodes(); node(list); } private static void node(NodeList list){ int len1 = list.getLength(); if(len1 == 0){return;} for(int i=0;i<list.getLength();i++){ Node node = list.item(i); if(node.getNodeType() == Node.TEXT_NODE){ //文本节点 if(node.getTextContent().trim().length() > 0){ System.out.println("#TEXT: " + node.getTextContent().trim()); } }else if(node.getNodeType() == Node.COMMENT_NODE){ //注释节点 System.out.println("<!--" + node.getTextContent().trim() + "-->"); }else if(node.getNodeType() == Node.ELEMENT_NODE){ if(node.hasChildNodes()){ //考虑只有文本节点的情况<xxx>x</xxx>的情况 int noneTextNodeCount = 0; NodeList childs = node.getChildNodes(); for (int j = 0; j < childs.getLength(); j++) { if(childs.item(j).getNodeType() != Node.TEXT_NODE && node.getNodeType() != Node.COMMENT_NODE){ noneTextNodeCount++; } } if(noneTextNodeCount != 0){ System.out.print("<" + node.getNodeName() + " "); NamedNodeMap atts = node.getAttributes(); if(atts != null){ for (int j = 0; j < atts.getLength(); j++) { Node att = atts.item(j); if(att == null){continue;} System.out.print(att.getNodeName()+"='"+att.getNodeValue()+"' "); } } System.out.print(">"); node(childs); System.out.print("</" + node.getNodeName() + ">"); System.out.println(); }else{ //只有文本节点<xxx>x</xxx> System.out.print("<" + node.getNodeName() + " "); NamedNodeMap atts = node.getAttributes(); if(atts != null){ for (int j = 0; j < atts.getLength(); j++) { Node att = atts.item(j); if(att == null){continue;} System.out.print(att.getNodeName()+"='"+att.getNodeValue()+"' "); } } System.out.print(">"); System.out.print(childs.item(0).getTextContent().trim()); System.out.print("</" + node.getNodeName() + ">"); System.out.println(); } }else{ //没有子节点 <xxx /> 这样的情况 System.out.print("<" + node.getNodeName() + " "); NamedNodeMap atts = node.getAttributes(); if(atts != null){ for (int j = 0; j < atts.getLength(); j++) { Node att = atts.item(j); if(att == null){continue;} System.out.print(att.getNodeName()+"='"+att.getNodeValue()+"' "); } } System.out.print("/>"); System.out.println(); } }else if(node.getNodeType() == Node.DOCUMENT_TYPE_NODE){ System.out.println("<!DOCTYPE " + node.getNodeName() + ">"); } } } }
发表评论
-
使用Maven构建一个开源项目的代码结构
2017-01-18 12:29 960本文仅适合maven初学者,适合那些像我一样平时不使用mav ... -
Java Des算法实现高速文件加密解密
2016-06-01 15:09 1717import java.io.FileInputStream ... -
Java比较两个数据库中所有表的区别【支持Oracle和SQLServer】
2014-12-09 14:37 5011开发过程中一般是一开发数据库 一生产数据库。 有时候在开发 ... -
根据数据库注释自动生成数据库文档【支持Oracle和Mysql】
2014-11-28 11:02 4161公司项目比较乱,很多时候都是需要先完成项目再准备文档。 数 ... -
根据SVN日志自动生成补丁包[基于Tomcat的JavaEE项目]
2014-11-25 10:08 2402项目开发过程中代码变化很频繁,需要更新文件时,每次都需要手 ... -
用批处理文件为JavaSE项目快速简单的的加载jar包
2014-02-22 10:39 678JavaSE小项目,有时候需要引入很多jar包,但是手动去修 ... -
java中WebService的HelloWorld
2011-11-14 07:24 1687WebService的HelloWorld 首先,在MyEc ... -
Swing中的JOptionPane类
2011-11-14 07:24 1807Swing中的JOptionPane类详解JOptionPan ... -
java输出PDF文档
2011-11-14 07:24 2746PDF输出用到iText包,由于PDF文档的特殊性,有可能需要 ... -
Java生成图片验证码
2011-11-14 07:24 2834Java生成图片验证码部分代码参考自网易博客白云城主的大作制作 ... -
java生成缩略图
2011-11-11 20:12 1090公司一些项目中经常把用户上传的原图用IMG标签改变尺寸后直接在 ... -
java读取和输出Excel
2011-11-11 20:11 1301Excel读取和输入要用到JXL包 输出Excel的代码示例 ... -
ApacheClient模拟浏览器GET和POST请求
2011-11-11 20:04 2115ApacheClient简介HttpClient ... -
Java IO 中对象的序列化操作
2011-06-12 16:54 1166Java IO 中对象的序列化 ... -
ireport和jasperReport生成统计报表的helloworld
2010-08-04 22:51 2705本文只涉及到简单的动态数据传递 首先使用ireport创建模 ... -
使用Java 发送电子邮件
2010-08-04 22:33 1770一个采用sun的类库的java发送邮件的demo 因为使用的 ... -
Java的远程方法调用 RMI 的 HelloWorld 程序
2010-07-29 16:11 1896本文大部分内容来自 http://www.jspcn.net/ ... -
设计模式 之 工厂模式
2010-07-28 21:45 1614常用设计模式之 工厂模 ... -
设计模式 之 单例模式
2010-07-28 21:44 1564单例模式:设计中有时候需要使某个对象在整个系统中只存在一个 ... -
使用jdom解析xml文件
2010-07-28 21:38 1612使用jdom解析xml package com.dowebb ...
相关推荐
总结来说,"遍历json显示树形菜单"这个任务涵盖了JSON解析、递归遍历和DOM操作等多个核心概念。理解和掌握这些技术对于任何前端开发者都是至关重要的。在实际开发中,可能还需要考虑性能优化、异步加载、用户交互等...
使用 htmlparser2 进行递归 DOM 遍历。 入门 安装模块: npm install walkers var walkers = require ( '../lib/walkers.js' ) ; var request = require ( 'request' ) ; var htmlparser = require ( "htmlparser2...
1. 避免使用`for...in`遍历DOM,因为它会遍历对象的所有可枚举属性,包括原型链上的属性。 2. 使用`NodeList`对象时,注意其非活集合特性,即在遍历过程中,如果DOM结构发生改变,遍历结果可能不准确。 3. 优化遍历...
DOM树由文档中的所有节点(元素节点、文本节点、注释节点等)所构成的一个树结构,DOM树的解析和构建是浏览器要实现的关键功能。既然DOM树是一个树结构,那么我们就可以使用遍历树结构的相关方法来对DOM树进行遍历,...
4. 使用递归和使用非递归(栈)遍历DOM树,哪一个更好,为什么? 深度优先遍历在代码上看起来更为简洁,递归逻辑清晰,但它的一个潜在问题是可能会导致`stackoverflow`错误,尤其是当DOM树的层级非常深时。为了避免...
在本文档中,"VC6中用DOM遍历网页中的元素"的讨论主要集中在如何在Microsoft Visual C++ 6.0(简称VC6)环境下使用DOM(文档对象模型)遍历和操作HTML网页中的元素,特别是表单和表单域。DOM是一种标准,允许程序和...
在JavaScript(JS)中,构建树形结构是一种常见的任务,特别是在网页交互和数据展示中。树形结构是一种数据组织方式,模拟自然界中的树状结构,其中每个元素(节点)可以有零个或多个子节点。这种结构使得数据的层次...
6. **$(selector).closest(selector)**: 这个方法会向上遍历DOM树,直到找到匹配给定选择器的第一个祖先元素。这对于查找最近的父级元素非常有用,比如寻找最近的表单元素。 在实际应用中,这些方法可以组合使用,...
本文将深入探讨如何使用JavaScript来遍历DOM树,并通过实际示例展示其在实际应用中的价值。 1. **理解DOM树** - DOM树是由文档的各个部分组成的,包括元素、属性、文本节点等。每个节点都有父节点、子节点和兄弟...
本主题主要关注如何在JavaScript中生成和操作树形结构。以下是一些关键知识点: 1. **定义节点对象**:在JavaScript中,树的每个元素通常表示为一个对象,包含数据以及指向子节点的引用。例如: ```javascript ...
总结,DOM4J递归解析是处理复杂XML文档的有效手段,它允许我们逐层访问XML结构,并进行相应的操作。结合Eclipse的快捷键使用,可以进一步提高我们的编程效率。在实际项目中,理解并掌握这一技术,将使XML处理变得...
- 使用递归遍历DOM树,收集每个节点的信息(如标签名、属性和内容)。 - 将收集的信息格式化为字符串,并调用`console.log`打印到浏览器控制台。 - 可能还包含了其他高级功能,如过滤特定类型的节点、颜色高亮关键...
深度优先遍历指的是尽可能深地遍历DOM树的分支,直到该分支的末端,然后回溯到上一个节点并遍历另一个分支。这种方法通常用递归实现,但也可以用栈进行非递归实现。 ##### 广度优先遍历 广度优先遍历,又称作层次...
综上所述,"tree_dom.zip"中的内容可能包含Java实现树形结构的递归和非递归遍历算法的示例代码。在实际开发中,我们需要根据具体需求和环境选择合适的遍历策略。对于大规模的树形结构,推荐使用非递归方法以提高效率...
- **渲染树**:将树结构显示在HTML中,可能使用DOM操作或模板引擎。 - **事件处理**:添加点击事件监听器,使得节点可被展开和折叠,可能使用`addEventListener`。 - **动画效果**:为了提高用户体验,可能会实现...
优化策略包括虚拟DOM、缓存计算结果、分页加载和使用高效的遍历算法。 9. **可扩展性**: 设计模块化和可配置的API,使得树形菜单组件能适应不同的需求和样式。 10. **兼容性和响应式设计**: 考虑到跨平台和...
在JavaScript中实现树形结构,可以使用递归函数进行遍历和操作,或者利用数据结构如队列或栈来辅助。`dtree`文件可能包含了这些功能的实现,比如提供了`addNode`, `removeNode`, `findNode`等方法。 使用这样的树形...