XML文件(2)--使用DOM4J示例
- 其他依赖字段/方法
private List<Book> bookList = new LinkedList<Book>();public List<Book> getBookList(String file) {parseXML(file);return this.bookList;}
- 获取DocumentBuilder(文件解析器)
/*** 解析XML文件* * @param file*/private void parseXML(String file) {// 创建book临时变量Book book = null;// 1.创建SAXReader对象SAXReader reader = new SAXReader();// 2.1 创建输入流InputStreamReader input = null;try {// 2.2 实例化输入流,并指定编码input = new InputStreamReader(new FileInputStream(file), "utf-8");// 3.加载XML文件到 documentDocument document = reader.read(input);// 4.获取根节点Element rootElement = document.getRootElement();// 5.根据根节点获取子节点迭代器,并遍历Iterator bookIter = rootElement.elementIterator();while (bookIter.hasNext()) {// 初始化book对象book = new Book();// 声明子节点对象Element bookEle = (Element) bookIter.next();// 如果子节点为bookif (bookEle.getName().equals("book")) {// 6.获取book节点的属性迭代器,并遍历Iterator eleIter = bookEle.attributeIterator();while (eleIter.hasNext()) {// 声明属性对象Attribute attr = (Attribute) eleIter.next();if (attr.getName().equals("id")) {book.setId(Integer.valueOf(attr.getValue()));}}// 7.获取book节点的子节点迭代器,并遍历Iterator childIter = bookEle.elementIterator();while (childIter.hasNext()) {// 声明book子节点对象Element child = (Element) childIter.next();// 判断并为book对象赋值switch (child.getName()) {case "title":book.setTitle(child.getText());break;case "author":book.setAuthor(child.getText());break;case "price":book.setPrice(Double.valueOf(child.getText()));break;case "year":book.setYear(child.getText());break;case "language":book.setLanguage(child.getText());break;default:System.out.println("未知属性!");}}// 向书籍列表添加书籍对象bookList.add(book);}}} catch (UnsupportedEncodingException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (DocumentException e) {// TODO Auto-generated catch blocke.printStackTrace();} finally {if (null != input) {try {input.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}
- 生成XML文件
/*** 创建XML文件,保存book列表* @param bookList* @param fileName* @param encoding*/private void createXML1(List<Book> bookList, String fileName,String encoding) {// 1.创建Document文件Document document = DocumentHelper.createDocument();// 2.创建root节点Element root = document.addElement("bookstore");// 3.创建book节点for (Book book : bookList) {Element ebook = root.addElement("book");// 4.1为book节点添加属性ebook.addAttribute("id", String.valueOf(book.getId()));// 4.2为book增加子节点,并设置文本值Element eTitle = ebook.addElement("title");eTitle.addCDATA(book.getTitle());Element eAuthor = ebook.addElement("author");eAuthor.setText(book.getAuthor());Element eYear = ebook.addElement("year");eYear.setText(book.getYear());Element ePrice = ebook.addElement("ePrice");ePrice.setText(String.valueOf(book.getPrice()));Element eLanguage = ebook.addElement("language");eLanguage.setText(book.getLanguage());}// 5.声明输出流OutputStream output = null;XMLWriter writer = null;// 6.设置输出的XML格式OutputFormat format = OutputFormat.createPrettyPrint();// 7.设置XML文档编码format.setEncoding(encoding);try {// 8.实例化输出流output = new FileOutputStream(fileName);// 9.实例化XML输出流,加载XML格式及设置writer = new XMLWriter(output, format);// 10.向硬盘写入XMLwriter.write(document);} catch (FileNotFoundException e) {e.printStackTrace();} catch (UnsupportedEncodingException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} finally {if (null != output) {try {output.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}if (null != writer) {try {writer.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}
- 创建RSS文件
/*** 创建RSS文件** @param fileName*/private void createXML(String fileName) {// 1.创建document对象,代表XML文件Document document = DocumentHelper.createDocument();// 2.创建根节点Element rss = document.addElement("rss");// 3.为rss节点添加version属性(版本)rss.addAttribute("version", "2");// 3.1生成子节点及节点内容Element channel = rss.addElement("channel");// 3.2生成内容Element title = channel.addElement("title");title.setText("<![CDATA[国内最新新闻]]>");// 4.创建xml输出流File file = new File(fileName);XMLWriter writer = null;try {// 5.设置xml格式OutputFormat format = OutputFormat.createPrettyPrint();// 设置xml编码format.setEncoding("GBK");writer = new XMLWriter(new FileOutputStream(file), format);// 设置是否转义,默认为true(转义)writer.setEscapeText(false);// 6.将XML文件写到硬盘writer.write(document);} catch (UnsupportedEncodingException | FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} finally {if (null != writer) {try {writer.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}
XML文件(2)--使用DOM4J示例的更多相关文章
- XML文件操作之dom4j
能够操作xml的api还是挺多的,DOM也是可以的,不过在此记录下dom4j的使用,感觉确实挺方便的 所需jar包官网地址:http://www.dom4j.org/dom4j-1.6.1/ dom4 ...
- XML文件解析之DOM4J解析
1.DOM4J介绍 dom4j的官网是http://www.dom4j.org/dom4j-1.6.1/,最新的版本是1.6.1,根据官网介绍可知.dom4j是一个易用的.开源的库,应用于Java平台 ...
- XML文件(1)--使用DOM示例
其他依赖字段/方法 // 书籍列表 private List<Book> bookList = new LinkedList<Book>(); /** * 根据xml文件,得到 ...
- Java 读写XML文件 API--org.dom4j
om4j是一个Java的XML API,类似于jdom,用来读写XML文件的.dom4j是一个十分优秀的JavaXML API,具有性能优异.功能强大和极其易使用的特点,同时它也是一个开放源代码的软件 ...
- 1.使用dom4j解析XML文件
一.dom4j的简介 dom4j是一个Java的XML API,是jdom的升级品,用来读写XML文件的.dom4j是一个十分优秀的JavaXML API,具有性能优异.功能强大和极其易使用的特点,它 ...
- Java进阶(二十七)使用Dom4j解析XML文件
使用Dom4j解析XML文件 写在前面的话 由于论文实验要求,需要实现操作XML文档,为此想到了dom4j这个工具,使用之后深感受益.在此分享给大家,以此共勉. 注:本文转载自http://blog. ...
- 菜鸟学Java(八)——dom4j详解之读取XML文件
dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的.dom4j是一个非常非常优秀的Java XML API,具有性能优异.功能强大和极端易用使用的特点,同时它也是一个开放源 ...
- 解析xml文件的几种技术与Dom4j与sax之间的对比
一.解析xml文件的几种技术:dom4j.sax.jaxb.jdom.dom 1.dom4j dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的.dom4j是一个非常优秀的 ...
- xml文件的解析(用dom4j解析)
有个第三方的包,用来解析.xml文件比较方便,它是DOM4J.由于是第三方的,所以要使用它就要先下载,并包含进来.步骤: 1.打开dom4j官网,这里下载最新版dom4j-2.1.1.jar. 2.新 ...
随机推荐
- [Hadoop in Action] 第2章 初识Hadoop
Hadoop的结构组成 安装Hadoop及其3种工作模式:单机.伪分布和全分布 用于监控Hadoop安装的Web工具 1.Hadoop的构造模块 (1)NameNode(名字节点) ...
- MYSQL基础操作
MYSQL基础操作 [TOC] 1.基本定义 1.1.关系型数据库系统 关系型数据库系统是建立在关系模型上的数据库系统 什么是关系模型呢? 1.数据结构可以规定,同类数据结构一致,就是一个二维的表格 ...
- angularJS(3)
angularJS(3) 一.angularJs的指令模型ng-model指令 ng-model 指令 绑定 HTML 元素 到应用程序数据. 为应用程序数据提供类型验证(number.email ...
- ORA-00054: resource busy and acquire with NOWAIT specified
删除表时遇到 ORA-00054:资源正忙,要求指定NOWAIT 错误.以前在灾备中心遇到过. 资源被锁定了,没有办法删除. 报错日志:ORA-00054: resource busy and acq ...
- POJ 1637 Sightseeing tour
Sightseeing tour Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 9276 Accepted: 3924 ...
- Java8 jvm参数
jmap输出 [tomcat@n01 ~]$ /opt/java/jdk1..0_101/bin/jmap -heap Attaching to process ID , please wait... ...
- 打包SpringBoot工程并部署
使用工具:Eclipse Linux下JDK版本:jdk-7u79-linux-x64.tar.gz 一.打包成jar并部署 步骤如下: 首先上pom.xml: <project xmlns=& ...
- Python--基础知识
- Web javascript 中常用API合集
来源于:https://www.kancloud.cn/dennis/tgjavascript/241852 一.节点 1.1 节点属性 Node.nodeName //返回节点名称,只读 Node. ...
- 【转】iOS动态库和静态库的简要介绍
静态库与动态库的区别 首先来看什么是库,库(Library)说白了就是一段编译好的二进制代码,加上头文件就可以供别人使用. 什么时候我们会用到库呢?一种情况是某些代码需要给别人使用,但是我们不希望别人 ...