dom4j如何解析XML文件
最近在 一些对xml文件的操作,下面简单写一个dom4j解析xml文件并将其封装到一个javabean中的例子,只是具有针对性的,不是通用的,仅供参考哦~~
首先说:dom4j是一个java的XML api,性能优异、功能强大、易于使用。使用dom4j对xml文件进行解析,并完成对文件的封装。
接下来,主要使用到的是dom4j中的SAXReader类,在这里我的流程是传入一个xml文件,调用写好的的工具类,完成对xml文件的解析。
xml文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<school>
<college name="数学">
<class name="1612A" classroom="36306">
<student>
<property name="name" value="张三"></property>
<property name="age" value="23"></property>
<property name="garden" value="男"></property>
</student>
<student>
<property name="name" value="李四"></property>
<property name="age" value="22"></property>
<property name="garden" value="女"></property>
</student>
<student>
<property name="name" value="王五"></property>
<property name="age" value="24"></property>
<property name="garden" value="男"></property>
</student>
</class>
</college>
<college name="英语">
<class name="1612C" classroom="35108">
<student>
<property name="name" value="赵六"></property>
<property name="age" value="21"></property>
<property name="garden" value="男"></property>
</student>
<student>
<property name="name" value="陈七"></property>
<property name="age" value="22"></property>
<property name="garden" value="男"></property>
</student>
<student>
<property name="name" value="郭八"></property>
<property name="age" value="25"></property>
<property name="garden" value="男"></property>
</student>
<student>
<property name="name" value="孙九"></property>
<property name="age" value="20"></property>
<property name="garden" value="女"></property>
</student>
</class>
</college>
</school>
Junit 测试如下:
public class Dom4jTest {
@Test
public void test() throws Exception{
6
File xmlFile = new File("文件位置");
// 调用工具类返回学生集合
List<Student> studentList = XMLUtil.fileTransferList(xmlFile);
for (Student student : studentList) {
System.out.println("-------------------------");
System.out.println("姓名:"+student.getName());
System.out.println("年龄:"+student.getAge());
System.out.println("性别:"+student.getGarden());
}
}
}
工具类如下:
public class XMLUtil {
public static List<Student> fileTransferList(File file) throws DocumentException{
// 返回值:学生信息集合
List<Student> studentList=new ArrayList<Student>();
// 创建saxReader对象
SAXReader reader = new SAXReader();
// 通过read方法读取一个文件 转换成Document对象
Document document = reader.read(file);
//获取根节点元素对象
Element root = document.getRootElement();
// 获取学院节点集合
List<Element> collegeElements = root.elements();
//已知属性名情况下
for (Element college : collegeElements) {
List<Student> collegeStudentList = getStudentListFromCollegeElement(college);
studentList.addAll(collegeStudentList);
}
return studentList;
}
private static List<Student> getStudentListFromCollegeElement(Element collegeElement){
// 返回值:学生信息集合
List<Student> studentList = new ArrayList<Student>();
List<Element> classElements = collegeElement.elements();
for (Element classElement : classElements) {
List<Student> classStudentList = getStudentListFromClassElement(classElement);
studentList.addAll(classStudentList);
}
return studentList;
}
private static List<Student> getStudentListFromClassElement(Element classElement){
// 返回值:学生信息集合
List<Student> studentList = new ArrayList<Student>();
List<Element> studentElements = classElement.elements();
for (Element student : studentElements) {
List<Element> propertyElements = student.elements();
Student student2 = studentElementTransferStudentEntity(propertyElements);
studentList.add(student2);
}
return studentList;
}
private static Student studentElementTransferStudentEntity(List<Element> propertyElements){
Student stu = new Student();
for (Element property : propertyElements) {
String name = property.attributeValue("name");
String value = property.attributeValue("value");
if("name".equals(name)){
stu.setName(value);
}
if("age".equals(name)){
stu.setAge(value);
}
if("garden".equals(name)){
stu.setGarden(value);
}
}
return stu;
}
}
最后呢,当然是显示结果了~~
结果如下:

到此结束了,以后也许有有其他解析的方法,也希望各位同道一块学习~~
dom4j如何解析XML文件的更多相关文章
- DOM4J方式解析XML文件
dom4j介绍 dom4j的项目地址:http://sourceforge.net/projects/dom4j/?source=directory dom4j是一个简单的开源库,用于处理XML. X ...
- java中采用dom4j解析xml文件
一.前言 在最近的开发中用到了dom4j来解析xml文件,以前听说过来解析xml文件的几种标准方式:但是从来的没有应用过来,所以可以在google中搜索dmo4j解析xml文件的方式,学习一下dom4 ...
- 在java项目中怎样利用Dom4j解析XML文件获取数据
在曾经的学习.net时常常会遇到利用配置文件来解决项目中一些须要常常变换的数据.比方数据库的连接字符串儿等.这个时候在读取配置文件的时候.我们一般会用到一个雷configuration,通过这个类来进 ...
- Dom4j解析xml文件
dom4j是一个Java的XML API,类似于jdom,用来读取的XML文件,由于它是将文件解析完存放在内存当中的,所以不适合解析大的XML文件,但就方便性和性能方面,一定程度要优于JDK中Domc ...
- 使用dom4j创建和解析xml文件
使用dom4j创建和解析xml文件 在项目开发中,我们经常会遇到xml文件的创建和解析从别人接口得到的xml文件,而我们最常使用的组件是dom4j. 下面我就以代码来讲解一下如何使用dom4j来创建x ...
- 【JAVA使用XPath、DOM4J解析XML文件,实现对XML文件的CRUD操作】
一.简介 1.使用XPath可以快速精确定位指定的节点,以实现对XML文件的CRUD操作. 2.去网上下载一个“XPath帮助文档”,以便于查看语法等详细信息,最好是那种有很多实例的那种. 3.学习X ...
- 用DOM4J解析XML文件案例
用DOM4J解析XML文件案例,由于DOM4J不像JAXP属于JAVASE里,所以如果要使用DOM4J,则必须额外引入jar包,如图:
- 解析XML文件的几种常见操作方法—DOM/SAX/DOM4j
解析XML文件的几种常见操作方法—DOM/SAX/DOM4j 一直想学点什么东西,有些浮躁,努力使自己静下心来看点东西,哪怕是回顾一下知识.看到了xml解析,目前我还没用到过.但多了解一下,加深点记忆 ...
- Dom4J解析xml文件动态转换为List<Bean>或者Map集合
大家在解析大量相似xml文件的时候是否会遇到这样一个问题:冗余的代码去set定义的实体对象Bean的值,基本都是一样的操作 而且毫无任何代码价值可言所以在这写了一个简单的例子,类封装了几个方法你只 ...
随机推荐
- ios监听键盘弹出 频幕位置改变
- Linux crontab执行bash脚本
需要设置环境,bash文件的开头可以这么写 #!/bin/bash . /etc/profile . ~/.bash_profile
- lua 面向对象编程类机制实现
lua no class It is a prototype based language. 在此语言中没有class关键字来创建类. 现代ES6, 已经添加class类. prototype bas ...
- VR原理讲解及开发入门
本文是作者obuil根据多年心得专门为想要入门的VR开发者所写,由52VR网站提供支持. 1. VR沉浸感和交互作用产生的原理: 在之前,我们观看一个虚拟的创造内容是通过平面显示器的,52VR ...
- TP框架常用配置
<?php// +----------------------------------------------------------------------// | ThinkPHP [ WE ...
- web前端基础知识 - Django进阶
1. 路由系统 1.1 单一路由对应 url(r'^index$', views.index), 1.2 基于正则的路由 url(r'^index/(\d*)', views.index), url( ...
- hashmap的底层实现
HashMap的底层实现都是数组+链表结构实现的,添加.删除.获取元素都是先计算hash值,根据hash值和table.length计算出index也就是table的数组的下标,然后进行相应的操作. ...
- Windows Phone 十九、罗盘
磁力计概述 拥有磁力计硬件支持的设备可以根据磁力计来确定相对于北极的角度 磁力计的访问 API 定义在 Compass 类中 调用方式和加速计类似 <Grid Background=" ...
- paper 123: SVM如何避免过拟合
过拟合(Overfitting)表现为在训练数据上模型的预测很准,在未知数据上预测很差.过拟合主要是因为训练数据中的异常点,这些点严重偏离正常位置.我们知道,决定SVM最优分类超平面的恰恰是那些占少数 ...
- AppCan JSSDK模块扩展
1. 从源码开始: 我们先看源码的8188行到9525行: window.appcan && appcan.define('window',function($,export ...