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. GIS规划应用——基于哈夫模型的GIS服务区分析

    1.  GIS服务区分析 区位因素是商业分析中一个至关重要的因素,因此在商店选址时,例行的服务区分析十分重要.服务区是指顾客分布的主要区域,在其范围内该店的商品销售量或服务营业额超过其竞争对手.对于现 ...

  2. 【VC++技术杂谈004】使用微软TTS语音引擎实现文本朗读

    本文主要介绍如何使用微软TTS语音引擎实现文本朗读,以及生成wav格式的声音文件. 1.语音引擎及语音库的安装 TTS(Text-To-Speech)是指文本语音的简称,即通过TTS引擎把文本转化为语 ...

  3. Module Zero之权限管理

    返回<Module Zero学习目录> 概览介绍 角色权限 用户权限 概览介绍 Module-Zero实现了ABP授权系统的IPermissionChecker接口.这篇文章中,我们将会看 ...

  4. Chrome开发者工具不完全指南(一、基础功能篇)

    就算你不是一名前端开发工程师,相信你也不会对Chrome浏览器感到陌生.根据最新的一份(2015/06)的浏览器市场占有率报告,Chrome近乎占有浏览器天下的半壁江山.简单.快捷使它成为了新时代人们 ...

  5. C#设计模式系列:适配器模式(Adapter)

    在实际的软件系统设计和开发中,为了完成某项工作需要购买一个第三方的库来加快开发.这带来一个问题,在应用程序中已经设计好的功能接口,与这个第三方提供的接口不一致.为了使得这些接口不兼容的类可以在一起工作 ...

  6. Android之TabActivity的使用

    TabActivity实现多页显示效果 由于手机屏幕有限,所以我们要尽量充分利用屏幕资源.在我们的应用程序中通常有多个Activity,而且会经常切换显示,这样我们就可以用TabActivity来显示 ...

  7. java中动态代理实现机制

    前言: 代理模式是常用的java设计模式,它的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息.过滤消息.把消息转发给委托类,以及事后处理消息等.代理类与委托类之间通常会存在关联关系 ...

  8. 转:Android随笔之——使用Root权限实现后台模拟全局按键、触屏事件方法(类似按键精灵)

    本文转载自CSDN的jzj1993,原文连接:http://blog.csdn.net/jzj1993/article/details/39158865 有时我们需要使用安卓实现在后台模拟系统按键,比 ...

  9. 【记录】EF Code First 实体关联,如何添加、修改实体?

    在使用 EF Code First 的时候,我们经常会对项目中的 Entry 进行一对多.多对多的映射配置,这时候就会产生主实体和子实体的概念,我们在添加.修改他们的时候,有时候会产生一些问题,比如添 ...

  10. 【Java心得总结四】Java泛型下——万恶的擦除

    一.万恶的擦除 我在自己总结的[Java心得总结三]Java泛型上——初识泛型这篇博文中提到了Java中对泛型擦除的问题,考虑下面代码: import java.util.*; public clas ...