使用dom4j解析XML例子
包括三个文件:studentInfo.xml(待解析的xml文件), Dom4jReadExmple.java(解析的主要类), TestDom4jReadExmple.java(测试解析的结果)
代码运行前需先导入dom4j架包。
studentInfo.xml文件(该文件放在本项目目录下)内容如下:
- <?xml version="1.0" encoding="gb2312"?>
- <students>
- <student age="25"><!--如果没有age属性,默认的为20-->
- <name>崔卫兵</name>
- <college>PC学院</college>
- <telephone>62354666</telephone>
- <notes>男,1982年生,硕士,现就读于北京邮电大学</notes>
- </student>
- <student>
- <name>cwb</name>
- <college leader="学院领导">PC学院</college><!--如果没有leader属性,默认的为leader-->
- <telephone>62358888</telephone>
- <notes>男,1987年生,硕士,现就读于中国农业大学</notes>
- </student>
- <student age="45">
- <name>xxxxx</name>
- <college leader="">xxx学院</college>
- <telephone>66666666</telephone>
- <notes>注视中,注释中</notes>
- </student>
- <student age="">
- <name>lxx</name>
- <college>yyyy学院</college>
- <telephone>88888888</telephone>
- <notes>注视中111,注释中222</notes>
- </student>
- </students>
Dom4jReadExmple.java类代码如下:
- import java.io.File;
- import java.util.HashMap;
- import java.util.Iterator;
- import org.dom4j.Attribute;
- import org.dom4j.Document;
- import org.dom4j.DocumentException;
- import org.dom4j.Element;
- import org.dom4j.io.SAXReader;
- /**
- * 利用dom4j进行XML编程
- *
- * @author henuyuxiang
- * @since 2014.7.11
- */
- public class Dom4jReadExmple {
- /**
- * 遍历整个XML文件,获取所有节点的值与其属性的值,并放入HashMap中
- *
- * @param filename
- * String 待遍历的XML文件(相对路径或者绝对路径)
- * @param hm
- * HashMap
- * 存放遍历结果,格式:<nodename,nodevalue>或者<nodename+attrname,attrvalue>
- */
- public void iterateWholeXML(String filename, HashMap<String, String> hm) {
- SAXReader saxReader = new SAXReader();
- try {
- Document document = saxReader.read(new File(filename));
- Element root = document.getRootElement();
- // 用于记录学生编号的变量
- int num = -1;
- // 遍历根结点(students)的所有孩子节点(肯定是student节点)
- for (@SuppressWarnings("rawtypes")
- Iterator iter = root.elementIterator(); iter.hasNext();) {
- Element element = (Element) iter.next();
- num++;
- // 获取person节点的age属性的值
- Attribute ageAttr = element.attribute("age");
- if (ageAttr != null) {
- String age = ageAttr.getValue();
- if (age != null && !age.equals("")) {
- hm.put(element.getName() + "-" + ageAttr.getName()
- + num, age);
- } else {
- hm.put(element.getName() + "-" + ageAttr.getName()
- + num, "20");
- }
- } else {
- hm.put(element.getName() + "-age" + num, "20");
- }
- // 遍历student结点的所有孩子节点(即name,college,telphone,notes),并进行处理
- for (@SuppressWarnings("rawtypes")
- Iterator iterInner = element.elementIterator(); iterInner
- .hasNext();) {
- Element elementInner = (Element) iterInner.next();
- if (elementInner.getName().equals("college")) {
- hm.put(elementInner.getName() + num,
- elementInner.getText());
- // 获取college节点的leader属性的值
- Attribute leaderAttr = elementInner.attribute("leader");
- if (leaderAttr != null) {
- String leader = leaderAttr.getValue();
- if (leader != null && !leader.equals("")) {
- hm.put(elementInner.getName() + "-"
- + leaderAttr.getName() + num, leader);
- } else {
- hm.put(elementInner.getName() + "-"
- + leaderAttr.getName() + num, "leader");
- }
- } else {
- hm.put(elementInner.getName() + "-leader" + num,
- "leader");
- }
- } else {
- hm.put(elementInner.getName() + num,
- elementInner.getText());
- }
- }
- }
- } catch (DocumentException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- }
TestDom4jReadExmple.java类代码如下:
- package demo1;
- import java.util.HashMap;
- /**
- * 测试Dom4jReadExmple解析的情况
- *
- * @author henuyuxiang
- * @since 2014.7.11
- */
- public class TestDom4jReadExmple {
- public static void main(String[] args) {
- try {
- // 获取解析完后的解析信息
- HashMap<String, String> hashMap;
- Dom4jReadExmple drb = new Dom4jReadExmple();
- // 遍历整个XML文件
- hashMap = new HashMap<String, String>();
- drb.iterateWholeXML("studentInfo.xml", hashMap);
- System.out.println("姓名\t年龄\t学院\t学院领导\t电话\t备注");
- for (int i = 0; i < hashMap.size(); i += 6) {
- int j = i / 6;
- System.out.print(hashMap.get("name" + j) + "\t");
- System.out.print(hashMap.get("student-age" + j) + "\t");
- System.out.print(hashMap.get("college" + j) + "\t");
- System.out.print(hashMap.get("college-leader" + j) + "\t");
- System.out.print(hashMap.get("telephone" + j) + "\t");
- System.out.println(hashMap.get("notes" + j) + "\t");
- }
- } catch (Exception ex) {
- ex.printStackTrace();
- }
- }
- }
运行结果如下图所示:
使用dom4j解析XML例子的更多相关文章
- dom4j解析xml文档全面介绍
一.dom4j介绍 dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的.dom4j是一个非常非常优秀的Java XML API,具有性能优异.功能强大和极端易用使用的特点, ...
- dom4j解析xml字符串实例
DOM4J 与利用DOM.SAX.JAXP机制来解析xml相比,DOM4J 表现更优秀,具有性能优异.功能强大和极端易用使用的特点,只要懂得DOM基本概念,就可以通过dom4j的api文档来解析xml ...
- java中采用dom4j解析xml文件
一.前言 在最近的开发中用到了dom4j来解析xml文件,以前听说过来解析xml文件的几种标准方式:但是从来的没有应用过来,所以可以在google中搜索dmo4j解析xml文件的方式,学习一下dom4 ...
- 转:在java中使用dom4j解析xml
JAVA 使用Dom4j 解析XML Java DOM4J Parser - Parse XML Document Dom4j下载及使用Dom4j读写XML简介 在java中使用dom4j解析xml ...
- Dom4j解析xml
public class Dom4jTest { // Dom4j解析xml // 因为所有的方法都需要Dom树 static Document document = null; static Ele ...
- 使用dom4j解析XML文档
dom4j的包开源包,不属于JDK里面,在myeclipse中要单独导入在项目中,这里不累赘了 做这个过程,很慢,因为很多方法没用过不熟悉,自己得去查帮助文档,而且还得去试,因为没有中文版,英文翻译不 ...
- 【JAVA使用XPath、DOM4J解析XML文件,实现对XML文件的CRUD操作】
一.简介 1.使用XPath可以快速精确定位指定的节点,以实现对XML文件的CRUD操作. 2.去网上下载一个“XPath帮助文档”,以便于查看语法等详细信息,最好是那种有很多实例的那种. 3.学习X ...
- 用DOM4J解析XML文件案例
用DOM4J解析XML文件案例,由于DOM4J不像JAXP属于JAVASE里,所以如果要使用DOM4J,则必须额外引入jar包,如图:
- java使用dom4j解析xml文件
关于xml的知识,及作用什么的就不说了,直接解释如何使用dom4j解析.假如有如下xml: dom4j解析xml其实很简单,只要你有点java基础,知道xml文件.结合下面的xml文件和java代码, ...
随机推荐
- jQuery第四章
jQuery中的事件和动画 一.jQuery中的事件 1.加载DOM (1)执行时机 $(document).ready()方法和window.onload方法有相似的功能,但是在执行时机方面是有区别 ...
- java 操作redis
使用Java操作Redis需要jedis-2.1.0.jar,如果需要使用Redis连接池的话,还需commons-pool-1.5.4.jar package com.test; import ja ...
- 数学#扩展欧几里德 POJ 1061&2115&2891
寒假做的题了,先贴那时写的代码. POJ 1061 #include<iostream> #include<cstdio> typedef long long LL; usin ...
- 数学之欧拉函数 &几道poj欧拉题
欧拉函数总结+证明 欧拉函数总结2 POJ 1284 原根 #include<iostream> #include<cstdio> #include<cstring> ...
- Java JVM 类的连接与初始化 [ 转载 ]
Java类的连接与初始化 (及2013阿里初始化笔试题解析) 转自http://www.cnblogs.com/iceAeterNa/p/4876747.html Java虚拟机通过 ...
- Openjudge-计算概论(A)-求特殊自然数
描述: 一个十进制自然数,它的七进制与九进制表示都是三位数,且七进制与九进制的三位数码表示顺序正好相反.编程求此自然数,并输出显示. 输入为1时,输出此自然数的十进制表达式:输入为2时,输出此自然数的 ...
- java基础(1)
class test { static { a=3; //System.out.println(a); } static int a = 1; String b = "ff"; p ...
- php 关了浏览器也可以自动运行脚本
<?php ignore_user_abort(); //即使Client断开(如关掉浏览器),PHP脚本也可以继续执行. set_time_limit(0); //执行时间为无限制,php默认 ...
- [转载] Winform中几种好用的Grid Control
转自 博客园 http://www.cnblogs.com/peterzb/archive/2009/05/29/1491781.html 1.DataGridView .net 2.0框架自带的网 ...
- MySQL 不允许从远程访问的解决方法
解决方法: 1. 改表法. 可能是你的帐号不允许从远程登陆,只能在localhost.这个时候只要在localhost的那台电脑,登入mysql后,更改 "mysql" 数据库里的 ...