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.新 ...
随机推荐
- 关于Oracle表连接
表连接注意left join on与where的区别: select * from dept; select * from emp; select * from emp a right outer j ...
- 终于将rsync-3.1.2配置成功,之外还挖掘了一些新的用法
1.为什么要用rsync: 有两台主机,开始准备做HA,考虑到工作量的问题,最终决定将重要文件进行同步即可. 找了一些同步的工具,rsync得到一致好评,速度快,消耗小等等. 2.接着找资料,最后选用 ...
- (八)数据呈现——一图胜千言<完结>
数据分析师就像厨师一样.厨师的工作有5步:下单.备料.切配.烹饪.打荷.数据分析师的工作也有5步.呈现数据就好像打荷.厨师在把菜肴端给客人之前要做盘饰美化,让菜肴精致美观,这个工作就是打荷.同样,数据 ...
- {"errcode":40097,"errmsg":"invalid args hint: [vjNe7xxxxxx8vr19]"}——记录一次微信错误处理
错误情况概述: 启动应用之后,微信调用 相机拍照 等接口是可以正常使用的, 但是过了一段时间(2个小时左右--token/jsapi_ticket的过期时间),微信调用相机拍照的功能失效,启用debu ...
- iOS实现渐变色背景(两种方式实现)
之前做过类似的功能,现在记录一下,来来来... 效果图: 说明=========================== 方法1: 说明:无返回值 用法:直接调用方法.原理是在view的layer层添加. ...
- mysql的缓冲查询和非缓冲查询
最近在开发一个PHP程序时遇到了下面的错误: PHP Fatal error: Allowed memory size of 268 435 456 bytes exhausted 错误信息显示允许的 ...
- SSH整合
首先,SSH不是一个框架,而是多个框架(struts+spring+hibernate)的集成,是目前较流行的一种Web应用程序开源集成框架,用于构建灵活.易于扩展的多层Web应用程序. 集成SSH框 ...
- asp.net缓存
copy:http://www.cnblogs.com/knowledgesea/archive/2012/06/20/2536603.html 一.缓存概念,缓存的好处.类型. ...
- HTML5使用jplayer播放音频、视频
首先推上神器 jPlayer:基于HTML5/Flash的音频.视频播放器 jPlayer是一个JavaScript写的完全免费和开源 (MIT) 的jQuery多媒体库插件 (现在也是一个Zepto ...
- GO语言总结(4)——映射(Map)
上一篇博客介绍了Go语言的数组和切片——GO语言总结(3)——数组和切片,本篇博客介绍Go语言的映射(Map) 映射是一种内置的数据结构,用来保存键值对的无序集合. (1)映射的创建 make ( m ...