test.xml文件
<?xml version="1.0" encoding="GBK"?> <doc> <person> <name>某人</name> <adds> <add ID="10002"> <BS>10002</BS> <note>南昌市</note> </add> <add ID=""> <BS>10002</BS> <note>空ID节点啊</note> </add> <add> <BS>10002</BS> <note>空ID节点啊</note> </add> <add ID="10001"> <note>深圳市</note> </add> </adds> </person> <other> <name ID="HEHE">其它节点</name> </other> </doc>
Leaf.java
package com.lushuifa.dom; public class Leaf { private String xpath;// private String value; private String domName; public String getDomName() { return domName; } public void setDomName(String domName) { this.domName = domName; } public Leaf(String xpath, String value,String domName) { this.xpath = xpath; this.value = value; this.domName = domName; } public String getXpath() { return xpath; } public void setXpath(String xpath) { this.xpath = xpath; } public String getValue() { return value; } public void setValue(String value) { this.value = value; } }
DomUtil.java文件代码
package com.lushuifa.dom; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.io.SAXReader; public class DomUtil { public Document readXML() { Document document = null; SAXReader saxReader = new SAXReader(); try { document = saxReader.read("F:\\testSpace\\Dom4jTest\\src\\test.xml"); } catch (DocumentException e) { e.printStackTrace(); } return document; } /** * 获取根元素 * * @return * @throws DocumentException */ public Element getRootElement(){ try { Document srcdoc = this.readXML(); Element elem = srcdoc.getRootElement(); return elem; } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } /** * 递归遍历方法 * * @param element */ public List<Leaf> getElementList(Element element,ArrayList<Leaf> elemList) { List elements = element.elements(); if (elements.size() == 0) { //没有子元素 String xpath = element.getPath(); String value = element.getTextTrim(); String domName = element.getName(); elemList.add(new Leaf(xpath, value,domName)); } else { //有子元素 for (Iterator it = elements.iterator(); it.hasNext();) { Element elem = (Element) it.next(); //递归遍历 getElementList(elem,elemList); } } return elemList; } public String getListString(List<Leaf> elemList) { StringBuffer sb = new StringBuffer(); for (Iterator<Leaf> it = elemList.iterator(); it.hasNext();) { Leaf leaf = it.next(); sb.append(leaf.getXpath()).append(" = ").append(leaf.getValue()).append("\n"); } return sb.toString(); } public static void main(String[] args) { DomUtil domUtil = new DomUtil(); System.out.println("得到document对象是:"+domUtil.readXML());; Element rootElement = domUtil.getRootElement(); List<Leaf> list = domUtil.getElementList(rootElement,new ArrayList<Leaf>()); System.out.println("list=="+list); for (Leaf leaf : list) { System.out.println("节点路径:"+leaf.getXpath()); System.out.println("节点名称:"+leaf.getDomName()); System.out.println("节点值:"+leaf.getValue()); } } }
测试结果:
节点路径:/doc/person/name
节点名称:name
节点值:某人
节点路径:/doc/person/adds/add/BS
节点名称:BS
节点值:10002
节点路径:/doc/person/adds/add/note
节点名称:note
节点值:南昌市
节点路径:/doc/person/adds/add/BS
节点名称:BS
节点值:10002
节点路径:/doc/person/adds/add/note
节点名称:note
节点值:空ID节点啊
节点路径:/doc/person/adds/add/BS
节点名称:BS
节点值:10002
节点路径:/doc/person/adds/add/note
节点名称:note
节点值:空ID节点啊
节点路径:/doc/person/adds/add/note
节点名称:note
节点值:深圳市
节点路径:/doc/other/name
节点名称:name
节点值:其它节点
相关推荐
此方法解析xml时,不受xml层级的限制。文件中包含了说明文档,java类,以及所使用到的*.jar。并对代码做了注释让你一目了然……
DOM树由文档中的所有节点(元素节点、文本节点、注释节点等)所构成的一个树结构,DOM树的解析和构建是浏览器要实现的关键功能。既然DOM树是一个树结构,那么我们就可以使用遍历树结构的相关方法来对DOM树进行遍历,...
DOM4J解析实例 412 JDOM解析实例 413 JAVA操纵XML 实例讲解 414 通过JAVA写数据到XML里面 415 内容总结 418 独立实践 418 第二十三章:HTML基础 419 学习目标 419 知识要点 420 HTML元素 420 标签属性 420 HTML基本...
JsoupXpath 是一款纯Java开发的使用xpath解析html的解析器,xpath语法分析与执行完全独立,html的DOM树生成借助Jsoup,故命名为JsoupXpath.为了在java里也享受xpath的强大与方便但又苦于找不到一款足够强大的xpath...
第4章(\代码\第04章) • sample01.htm 字符串直接量 • sample02.htm 使用转义字符 • sample03.htm 数组直接量的使用方法 • sample04.htm 数组直接量 • sample05.htm ...
{14.4}dom4j}{207}{section.14.4} {14.5}XPath}{210}{section.14.5} {14.6}apache.commons}{211}{section.14.6} {15}sqlite3}{213}{chapter.15} {16}Web基础}{215}{chapter.16} {16.1}...
DWR 自动将DOM、DOM4J、JDOM和XOM转换成DOM树,前面这几种类型都仅仅返回Document,Element,Node.DWR会自动将这些转换成浏览器DOM对象.通常在启动JDOM Converter时会有一个提示信息,除非你想采用JDOMconverter否则可以...
1.11 JavaScript与Java、Java applet 1.12 JavaScript的未来如何 1.13 本章小结 第2章 JavaScript语言入门 2.1 编程准备 2.1.1 编程术语 2.1.2 脚本执行顺序 2.1.3 大小写敏感 2.1.4 空白字符 2.1.5 分号 2.1.6 块 ...
1.11 JavaScript与Java、Java applet 1.12 JavaScript的未来如何 1.13 本章小结 第2章 JavaScript语言入门 2.1 编程准备 2.1.1 编程术语 2.1.2 脚本执行顺序 2.1.3 大小写敏感 2.1.4 空白字符 2.1.5 分号 2.1.6 块 ...
1.2.6 在java中使用json / 12 1.2.7 更多有关json的信息 / 15 1.3 ext js 4概述 / 15 1.4 ext js的开发工具的获取、安装与配置介绍 / 18 1.4.1 ext designer / 18 1.4.2 在visual studio中实现智能提示 / 23 ...
技术点 ADO.Net技术应用、SQLServer、MD5安全算法、基于NPOI的Excel文件处理、树状结构数据处理、递归、CodeSmith、代码生成器、三层架构。 项目说明 这是一个用WinForm技术实现的系统,传智播客在开课的半个月就...