public void createXML() throws Exception{
Book b1 = new Book();
b1.setId("1");
b1.setName("Core java");
b1.setAuthor("Horstmann");
b1.setPrice("36");
b1.setVersion("4.0");
Book b2=new Book();
b2.setId("2");
b2.setName("Thinking in java");
b2.setAuthor("jackli");
b2.setPrice("50");
b2.setVersion("5.0");
b2.setLanguage("English");
ArrayList<Book> booklist=new ArrayList<Book>();
booklist.add(b1);
booklist.add(b2); //1:创建一个SAXTransformerFactory对象
SAXTransformerFactory saxtransformerfactory = (SAXTransformerFactory) SAXTransformerFactory.newInstance();
//2:创建TransformerHandler对象
TransformerHandler transformerhandler=saxtransformerfactory.newTransformerHandler();
//3:创建Transformer对象
Transformer transformer=transformerhandler.getTransformer();
//4:利用transformer的对象对xml文件格式进行设置
//1:利用OutputKeys.ENCODING设定xml文件的编码
transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
//2:利用OutputKeys.INDENT设定xml文件是否换行
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
//5:创建file对象用来保存xml文件
File file=new File("C:\\Users\\XIA\\Desktop\\book2.xml");
if(!file.exists())//用一个if语句判断,file文件是否存在,如果不存在的话,则 创建一个相应的file文件
{
file.createNewFile();
} //6创建RESULT对象,使其与TransformerHandler的对象相关联
Result result=new StreamResult(new FileOutputStream(file));
transformerhandler.setResult(result); /*
* 上面准备工作完毕,接下来就应该利用TransformerHandler对象对xml文件的节点进行编写
* 7:接下来主要工作就是利用startDocument,endDocument,startElement,endElement等方法编写bookstore的各个节点
* 8: //创建AttributesImpl对象,为下面循环使用attr而做准备的,是xml文件中的每一个节点都可以赋属性
* 9:注意一定要清空bookstore中attr属性,因为如果bookstore中属性值存在的话,是会影响后面book节点的属性值的
* 10:对于节点之间的文本文件的建立用characters()方法,其中第一个参数是char[]数组,第二个参数是数组的开始位置,第三个参数是数组的结束位置。
*/ transformerhandler.startDocument();
AttributesImpl attr=new AttributesImpl(); transformerhandler.startElement("", "", "bookstore", attr);
for (Book book : booklist) {
attr.clear();
attr.addAttribute("", "", "id", "", "1");
transformerhandler.startElement("", "", "book", attr);
/*
* 创建name节点
*/
if(book.getName()!=null&&!book.getName().trim().equals(""))
{
attr.clear();
transformerhandler.startElement("", "", "name", attr);
transformerhandler.characters(book.getName().toCharArray(), 0, book.getName().length());
transformerhandler.endElement("", "", "name");
}
/*
* 创建author节点
*/
if(book.getAuthor()!=null&&!book.getAuthor().trim().equals(""))
{
attr.clear();
transformerhandler.startElement("", "", "author", attr);
transformerhandler.characters(book.getAuthor().toCharArray(), 0, book.getAuthor().length());
transformerhandler.endElement("", "", "author");
}
/*
* 创建price节点
*/
if (book.getPrice()!=null&&!book.getPrice().trim().equals("")) {
attr.clear();
transformerhandler.startElement("", "", "price", attr);
transformerhandler.characters(book.getPrice().toCharArray(), 0, book.getPrice().length());
transformerhandler.endElement("", "", "price");
}
/*
* 创建version节点
*/
if(book.getVersion()!=null&&!book.getVersion().trim().equals(""))
{
attr.clear();
transformerhandler.startElement("", "", "version", attr);
transformerhandler.characters(book.getVersion().toCharArray(), 0, book.getVersion().length());
transformerhandler.endElement("", "", "version");
}
/*
* 创建language节点
*/
if (book.getLanguage()!=null&&!book.getLanguage().trim().equals("")) {
attr.clear();
transformerhandler.startElement("", "", "language", attr);
transformerhandler.characters(book.getLanguage().toCharArray(), 0, book.getLanguage().length());
transformerhandler.endElement("", "", "language");
} transformerhandler.endElement("", "", "book");
}
transformerhandler.endElement("", "", "bookstore");
transformerhandler.endDocument();
} public static void main(String[] args) throws Exception {
SAXTest test=new SAXTest();
test.createXML();
} 注意:
//6创建RESULT对象,使其与TransformerHandler的对象相关联
Result result=new StreamResult(new FileOutputStream(file));
transformerhandler.setResult(result); 这里面创佳妮result对象,必须在调用StartDocument()方法之前开始调用,而且这一步是把handler对象与result结合在一起的关键。

怎么用SAX生成xml文件的更多相关文章

  1. Python中使用dom模块生成XML文件示例

    在Python中解析XML文件也有Dom和Sax两种方式,这里先介绍如何是使用Dom解析XML,这一篇文章是Dom生成XML文件,下一篇文章再继续介绍Dom解析XML文件. 在生成XML文件中,我们主 ...

  2. Python:Dom生成XML文件(写XML)

    http://www.ourunix.org/post/327.html 在python中解析XML文件也有Dom和Sax两种方式,这里先介绍如何是使用Dom解析XML,这一篇文章是Dom生成XML文 ...

  3. Android 解析XML文件和生成XML文件

    解析XML文件 public static void initXML(Context context) { //can't create in /data/media/0 because permis ...

  4. JAVA使用SAX解析XML文件

    在我的另一篇文章(http://www.cnblogs.com/anivia/p/5849712.html)中,通过一个例子介绍了使用DOM来解析XML文件,那么本篇文章通过相同的XML文件介绍如何使 ...

  5. Java生成XML文件

    我们在数据库中的数据可以将其提取出来生成XML文件,方便传输.例如数据库中有Admin这张表: 我们写一个java类表示admin数据: package xmlDom.vo; import java. ...

  6. Android 使用xml序列化器生成xml文件

    在<Android 生成xml文件>一文中使用流的形式写入xml格式文件,但是存在一定的问题,那就是在短信内容中不能出现<>之类的括号,本文使用xml序列化器来解决 xml序列 ...

  7. C# 生成xml文件

    本篇文章旨在.net环境下生成xml文件,以控制台应用程序为例进行说明. 1.在vs中新建控制台应用程序CreateXml 2.CreateXmlFile:主要生成xml的函数 public void ...

  8. 视频播放实时记录日志并生成XML文件

    需求描述: 在JWPlayer视频播放过程中,要求实时记录视频观看者播放.暂停的时间,并记录从暂停到下一次播放时所经过的时间.将所有记录保存为XML文件,以方便数据库的后续使用. 实现过程: 尝试1: ...

  9. 使用XML序列化器生成XML文件和利用pull解析XML文件

    首先,指定XML格式,我指定的XML格式如下: <?xml version='1.0' encoding='utf-8' standalone='yes' ?> <message&g ...

随机推荐

  1. Opengl中矩阵和perspective/ortho的相互转换

    Opengl中矩阵和perspective/ortho的相互转换 定义矩阵 Opengl变换需要用四维矩阵.我们来定义这样的矩阵. +BIT祝威+悄悄在此留下版了个权的信息说: 四维向量 首先,我们定 ...

  2. 内存提取SWF,破解doswf方法概述

    参考文献: http://blog.ceflash.com/%E5%86%99%E7%82%B9swf%E4%BA%8C%E8%BF%9B%E5%88%B6%E7%9A%84%E4%B8%9C%E8% ...

  3. 2013 duilib入门简明教程 -- 第一个程序 Hello World(3)

    小伙伴们有点迫不及待了么,来看一看Hello World吧: 新建一个空的win32项目,新建一个main.cpp文件,将以下代码复制进去: #include <windows.h> #i ...

  4. 今天不谈技术,说说一些常用的软件~By 逆天

    前端工具:http://www.cnblogs.com/dunitian/p/5640147.html    在线办公: http://word.baidu.com/welcome.html http ...

  5. 【Win10 应用开发】集成语音命令

    记得老周以前在写WP8应用开发的文章时,曾经写过语音命令集成的文章,后来8.1的时候“小娜”问世,但考虑到其变化不大,故老周没有补写相应的文章. 今天,老周打算补一下Win 10通用应用开发中,有关语 ...

  6. PHP新的垃圾回收机制:Zend GC详解

    概述 在5.2及更早版本的PHP中,没有专门的垃圾回收器GC(Garbage Collection),引擎在判断一个变量空间是否能够被释放的时候是依据这个变量的zval的refcount的值,如果re ...

  7. Unity基础知识学习笔记二

    1,object Instantiate(object original,Vector3 position,Quaternion rotation)       克隆原始物体,并返回克隆物体.     ...

  8. 深入理解DOM事件机制系列第四篇——事件模拟

    × 目录 [1]引入 [2]模拟机制 [3]自定义事件 前面的话 事件是网页中某个特别的瞬间,经常由用户操作或通过其他浏览器功能来触发.但实际上,也可以使用javascript在任意时刻来触发特定的事 ...

  9. JSONP详解

    0.关于JSONP 什么的JSONP JSONP(JSON with Padding)是资料格式 JSON 的一种“使用模式”,可以让网页从别的网域要资料.另一个解决这个问题的新方法是跨来源资源共享. ...

  10. 修复bootstrap daterangepicker中的3个问题

    最近项目中使用了一个基于Bootstrap的daterangepicker控件. 1.点击页面其他空白的地方,会把之前在日历上选中的日期选择上. 具体描述: 1.点击打开日期选择框 2.选择一个日期范 ...