dom4j解析xml实例
dom4j是一个java的XML API,类似jdom,用来读写XML文件,它性能优异、功能强大和极易使用等特点
所用jar包:dom4j-1.6.1.jar
需要解析的xml文件:people.xml
- <people city="shenzhen">
- <student name="milton" age="22"></student>
- <student name="lego" age="23"></student>
- <teacher name="bruce" age="27"></teacher>
- <teacher name="ziven" age="28"></teacher>
- </people>
首先根据xml文档构建javabean
People.java
Student.java
Teacher.java
解析代码:
- package com.test.xml;
- import java.io.File;
- import java.net.URISyntaxException;
- 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;
- import com.test.xml.element.People;
- import com.test.xml.element.Student;
- import com.test.xml.element.Teacher;
- public class XmlParser {
- @SuppressWarnings("unchecked")
- public static People parseXml(String xmlPath){
- File xmlFile = new File(xmlPath);
- System.out.println(xmlFile.getPath());
- if(xmlFile.exists()){
- SAXReader reader = new SAXReader();
- People people = new People();
- try {
- //读入文档流
- Document document = reader.read(xmlFile);
- //获取根节点
- Element root = document.getRootElement();
- List<Student> students = new ArrayList<Student>();
- List<Teacher> teachers = new ArrayList<Teacher>();
- people.setCity(root.attributeValue("city"));
- //解析student节点
- for(Iterator iterator = root.elementIterator("student");iterator.hasNext();){
- Element eStudent = (Element) iterator.next();
- Student student = new Student(eStudent.attributeValue("name"), Integer.parseInt(eStudent.attributeValue("age")));
- students.add(student);
- }
- //解析teacher节点
- for(Iterator iterator = root.elementIterator("teacher");iterator.hasNext();){
- Element eTeacher = (Element) iterator.next();
- Teacher teacher = new Teacher(eTeacher.attributeValue("name"), Integer.parseInt(eTeacher.attributeValue("age")));
- teachers.add(teacher);
- }
- people.setStudent(students);
- people.setTeacher(teachers);
- System.out.println("parse success!");
- } catch (DocumentException e) {
- e.printStackTrace();
- }
- return people;
- }else{
- System.out.println("file is not exist!");
- return null;
- }
- }
- public static void main(String[] args) throws URISyntaxException{
- String xmlPath = "";
- xmlPath = "D:/Program Files/eclipse-jee/workspace/TEST/src/com/test/xml/people.xml";
- System.out.println("file full path is "+xmlPath);
- //解析people.xml
- People p = parseXml(xmlPath);
- //处理解析结果
- System.out.println(p.getCity());
- List<Student> sList = p.getStudent();
- List<Teacher> tList = p.getTeacher();
- for(Student s:sList){
- System.out.println(s.getName()+"--"+s.getAge());
- }
- for(Teacher t:tList){
- System.out.println();
- }
- }
- }
- 运行结果:
- parse success!
- shenzhen
- milton--22
- lego--23
dom4j解析xml实例的更多相关文章
- java dom4j解析xml实例(2)
java利用dom4j解析xml 需要的jar包: dom4j官方网站在 http://www.dom4j.org/ 下载dom4j-1.6.1.zip 解开后有两个包,仅操作XML文档的话把dom4 ...
- java dom4j解析xml实例
java利用dom4j解析xml 需要的jar包: dom4j官方网站在 http://www.dom4j.org/ 下载dom4j-1.6.1.zip 解开后有两个包,仅操作XML文档的话把dom4 ...
- dom4j解析xml实例(2)
dom4j是一个java的XML API,类似jdom,用来读写XML文件,它性能优异.功能强大和极易使用等特点 所用jar包:dom4j-1.6.1.jar.jaxen-1.1-beta-6.jar ...
- java dom4j解析xml实例(3)
代码运行前需要先导入dom4j架包. 需要解析的XML文件test.xml如下: <students> <student age="25"><!--如 ...
- 【JAVA使用XPath、DOM4J解析XML文件,实现对XML文件的CRUD操作】
一.简介 1.使用XPath可以快速精确定位指定的节点,以实现对XML文件的CRUD操作. 2.去网上下载一个“XPath帮助文档”,以便于查看语法等详细信息,最好是那种有很多实例的那种. 3.学习X ...
- dom4j解析xml文档全面介绍
一.dom4j介绍 dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的.dom4j是一个非常非常优秀的Java XML API,具有性能优异.功能强大和极端易用使用的特点, ...
- 源生API解析XML文档与dom4j解析XML文档
一.XML语言 XML是一种可扩展的标记语言,是一种强类型的语言,类似HTML(超文本标记语言,是一种弱类型的语言).XML是一种通用的数据交换格式(关系型数据库),综上所诉:XML可以传输数据,也可 ...
- 【java项目实战】dom4j解析xml文件,连接Oracle数据库
简单介绍 dom4j是由dom4j.org出品的一个开源XML解析包.这句话太官方.我们还是看一下官方给出的解释.例如以下图: dom4j是一个易于使用的.开源的,用于解析XML,XPath和XSLT ...
- org.dom4j 解析XML
org.dom4j 解析xml java 代码 1 import java.io.File; import java.io.FileOutputStream; import java.io.FileW ...
随机推荐
- 在TextView上显示图片信息
布局文件 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:t ...
- HDU 5798 Stabilization
方法太厉害了....看了官方题解的做法....然后...想了很久很久才知道他想表达什么.... #pragma comment(linker, "/STACK:1024000000,1024 ...
- JedisConnectionException: Unexpected end of stream.
在实际项目中遇到redis读取时报错. 报错是 [ERROR] redis.clients.jedis.exceptions.JedisConnectionException: Unexpected ...
- openwrt下加载snmp模块
加snmp模块到openwrt中去 1.下载snmp的解压包文件 net-snmp-5.4.2.1.tar.gz 下载地址为:http://www.net-snmp.org/download.html ...
- A - 娜娜梦游仙境系列——诡异的钢琴
A - 娜娜梦游仙境系列——诡异的钢琴 Time Limit: 2000/1000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Othe ...
- svg笔记----------path篇
每个路径都必须以moveto 命令开始 moveto.lineto和closepath <path d="M 10 10 L 100 10z"/> 大写字母命令的坐标是 ...
- 状态转移的最短路 隐式图搜索 UVA 658
紫书365 题目大意:给你n个全都是bug的东西,然后每次可以修复,给你修复前后的状态,问最后如果能把bug全都修复,最少需要多少时间. 思路:从最初状态开始,然后枚举bug即可. 表示priorit ...
- parted
1.选择分区表 sudo parted -s /dev/sdXX mklabel gpt 2.创建分区 sudo parted -s -- /dev/sdX mkpart primary 0 -1s ...
- sql server多行数据(一列)转换成一个字段
create table #test ( id int not null, memeo int not null ) ,) ,) ,) )) ,,'') drop table #test 总结: 格式 ...
- pom 的scope标签分析
一.compile:编译范围compile是默认的范围:如果没有提供一个范围,编译范围依赖在所有的classpath 中可用,同时它们也会被打包.而且这些dependency会传递到依赖的项目中. 二 ...