Dom4j与Jdom解析文档
来源:互联网 发布:web前端连接数据库 编辑:程序博客网 时间:2024/04/28 01:53
1.使用dom4j解析文档,解析的文件名称为:studentInfo.xml,该文件放在src目录下
<?xml version="1.0" encoding="UTF-8"?><students><student no="001"><name>张三</name><birthday>1990/5/11</birthday><remark>测试数据</remark></student><student no="002"><name>李四</name><birthday>1990/5/20</birthday><remark>测试数据2</remark></student></students>
2.引入dom4j的jar包,student的实体对象
package com.xilin.jiong.entity;public class Student {/* * 学号 */private String no;/* * 姓名 */private String name;/* * 出生日期 */private String birthday;/* * 备注 */private String remark;public String getNo() {return no;}public void setNo(String no) {this.no = no;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getBirthday() {return birthday;}public void setBirthday(String birthday) {this.birthday = birthday;}public String getRemark() {return remark;}public void setRemark(String remark) {this.remark = remark;}@Overridepublic String toString() {return "Student [no=" + no + ", name=" + name + ", birthday="+ birthday + ", remark=" + remark + "]";}}3.dom4j具体的实现如下:
package com.xilin.jiong.study.dom4j;import java.io.IOException;import java.io.InputStream;import java.util.ArrayList;import java.util.List;import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.Element;import org.dom4j.io.SAXReader;import com.xilin.jiong.entity.Student;public class Dom4jStudy {public static void main(String[] args) {List<Student> students = null;Document document = null;document = getDocument("studentInfo.xml");if (null!=document) {students = readNodes(document);}else {System.err.println("获取文档对象失败,无法解析!");}System.err.println(students);}/** * 获取解析文档的内容 * @param document 文档解析的内容 * @return 解析的对象 */public static List<Student> readNodes(Document document) {List<Student> students = new ArrayList<Student>();//获取根节点Element rootElement = document.getRootElement();System.out.println("根节点:"+rootElement);//获取根节点下的子节点List<Element> childElements = rootElement.elements();Student student = null;//循环遍历根节点下的子节点 for (Element childelement : childElements) { student = new Student();//获取子节点的属性 String no = childelement.attributeValue("no"); student.setNo(no); //获取子节点下的子节点集合 List<Element> subElements = childelement.elements(); //循环遍历子节点下的集合信息 for (Element subElement : subElements) { if ("name".equals(subElement.getName())) { String name = subElement.getTextTrim(); student.setName(name); }else if ("birthday".equals(subElement.getName())) { String birthday = subElement.getTextTrim(); student.setBirthday(birthday); }else { String remark = subElement.getTextTrim(); student.setRemark(remark); }} students.add(student);}return students;}/** * 获取解析的文档内容 * @param filename 解析的文件名称 * @return 获取解析的文档信息 */public static Document getDocument(String filename){SAXReader saxReader = new SAXReader();Document document = null;InputStream inputStream = Dom4jStudy.class.getClassLoader().getResourceAsStream(filename);try {document = saxReader.read(inputStream);} catch (DocumentException e) {e.printStackTrace();}finally{if (null!=inputStream) {try {inputStream.close();} catch (IOException e) {e.printStackTrace();}}}return document;}}5.使用jdom的解析方式如下,首先引入jdom2的jar包
具体的代码:
package com.xilin.jiong.study.jdom;import java.io.IOException;import java.io.InputStream;import java.util.ArrayList;import java.util.List;import org.jdom2.Document;import org.jdom2.Element;import org.jdom2.JDOMException;import org.jdom2.input.SAXBuilder;import com.xilin.jiong.entity.Student;public class JdomStudy {public static void main(String[] args) {Document document = getDocument("studentInfo.xml");List<Student> students = null;//文档流不为空if (null != document) {//解析成对象students = readNodes(document);}else {System.out.println("文档流为空,无法解析!");}System.out.print(students);}/** * 获取需要解析的文档流 * * @param filename * 解析的文件名称 * @return 获取需要解析的文档流 */public static Document getDocument(String filename) {//文档解析器SAXBuilder saxBuilder = new SAXBuilder();//解析的文件输入流InputStream inputStream = null;//解析的文档流Document document = null;try {inputStream = JdomStudy.class.getClassLoader().getResourceAsStream(filename);document = saxBuilder.build(inputStream);} catch (JDOMException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} finally {if (null != inputStream) {try {inputStream.close();} catch (IOException e) {e.printStackTrace();}}}return document;} /** * 读取对象 * @param document 文档输入流 * @return 对象集合 */public static List<Student> readNodes(Document document) {List<Student> students = new ArrayList<Student>();//获取根节点Element rootElement = document.getRootElement();System.out.println("根节点:"+rootElement.getName());//获取根下面的子节点List<Element>childsElements = rootElement.getChildren();//Student 对象Student student = null;//循环遍历根下面的子节点的信息for(Element childElement : childsElements){student = new Student();//获取子节点属性名称(no)String no = childElement.getAttributeValue("no");student.setNo(no);//子节点下的子节点集合List<Element> subElements = childElement.getChildren();//循环遍历子节点的子节点信息for (Element element : subElements) {if ("name".equals(element.getName())) {String name = element.getTextTrim();student.setName(name);}else if ("birthday".equals(element.getName())) {String birthday = element.getTextTrim();student.setBirthday(birthday);}else {String remark = element.getTextTrim();student.setRemark(remark);}}students.add(student);}return students;}}
0 0
- Dom4j与Jdom解析文档
- 利用DOM/SAX/JDOM/dom4j解析XML文档
- XML文档解析DOM、SAX、JDOM、DOM4j、XPath
- XML文档解析DOM、SAX、JDOM、DOM4j、XPath
- xml文档解析之DOM、SAX、JDOM、Dom4J总结
- 四种方法解析XML文档:Dom、SAX、JDOM、dom4j
- 四种方法解析XML文档:Dom、SAX、JDOM、dom4j
- XML解析之—JDOM与DOM4J(更好)
- jdom解析xml文档
- jdom解析xml文档
- JDOM解析XML文档
- Jdom解析XML文档
- jdom解析xml文档
- Dom4j与JDOM读写XML
- XML文档常用解析方式DOM、SAX、JDOM、DOM4J的比较
- [Java开发之路](12)JDOM和DOM4J解析XML文档
- DOM、SAX、JDOM、Dom4j读写XML文档
- java与xml之JDOM生成和解析XML文档
- UML包图
- js中map中元素排序
- 回首Hibernate之入门篇
- 浅谈用极大化思想解决最大子矩形问题
- easyui datagrid 生成动态列后 实现分页
- Dom4j与Jdom解析文档
- oschina-git项目托管
- vijos P1020 切蛋糕
- 运行Myeclipse时,如何删除IVM窗口
- Jquery ajax的标准写法
- 【Python】Matplotlib绘图库初探
- python入门笔记(Day7)--slots,@property,MixIn,定制(str,iter,getitem,getattr,call)枚举(Enum)元type,metaclass,ORM
- Spring Security
- Service基础(一)---》使用服务Service