怎么用SAX生成xml文件
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文件的更多相关文章
- Python中使用dom模块生成XML文件示例
在Python中解析XML文件也有Dom和Sax两种方式,这里先介绍如何是使用Dom解析XML,这一篇文章是Dom生成XML文件,下一篇文章再继续介绍Dom解析XML文件. 在生成XML文件中,我们主 ...
- Python:Dom生成XML文件(写XML)
http://www.ourunix.org/post/327.html 在python中解析XML文件也有Dom和Sax两种方式,这里先介绍如何是使用Dom解析XML,这一篇文章是Dom生成XML文 ...
- Android 解析XML文件和生成XML文件
解析XML文件 public static void initXML(Context context) { //can't create in /data/media/0 because permis ...
- JAVA使用SAX解析XML文件
在我的另一篇文章(http://www.cnblogs.com/anivia/p/5849712.html)中,通过一个例子介绍了使用DOM来解析XML文件,那么本篇文章通过相同的XML文件介绍如何使 ...
- Java生成XML文件
我们在数据库中的数据可以将其提取出来生成XML文件,方便传输.例如数据库中有Admin这张表: 我们写一个java类表示admin数据: package xmlDom.vo; import java. ...
- Android 使用xml序列化器生成xml文件
在<Android 生成xml文件>一文中使用流的形式写入xml格式文件,但是存在一定的问题,那就是在短信内容中不能出现<>之类的括号,本文使用xml序列化器来解决 xml序列 ...
- C# 生成xml文件
本篇文章旨在.net环境下生成xml文件,以控制台应用程序为例进行说明. 1.在vs中新建控制台应用程序CreateXml 2.CreateXmlFile:主要生成xml的函数 public void ...
- 视频播放实时记录日志并生成XML文件
需求描述: 在JWPlayer视频播放过程中,要求实时记录视频观看者播放.暂停的时间,并记录从暂停到下一次播放时所经过的时间.将所有记录保存为XML文件,以方便数据库的后续使用. 实现过程: 尝试1: ...
- 使用XML序列化器生成XML文件和利用pull解析XML文件
首先,指定XML格式,我指定的XML格式如下: <?xml version='1.0' encoding='utf-8' standalone='yes' ?> <message&g ...
随机推荐
- [nRF51822] 10、基础实验代码解析大全 · 实验15 - RTC
一.实验内容: 配置NRF51822 的RTC0 的TICK 频率为8Hz,COMPARE0 匹配事件触发周期为3 秒,并使能了TICK 和COMPARE0 中断. TICK 中断中驱动指示灯D1 翻 ...
- CVTE实习求职经历
今天,听到有好多同学最近要去面试CVTE这家企业,于是呢,准备将自己的经历写上来,给大家一个参考,希望能够大家一次帮助. 一.整体感觉 首先呢,先讲一下我个人对这家企业的整体感觉吧. 1. 第一次 对 ...
- 《Node即学即用》—— 读后总结
导图
- Atitit 图像处理Depixelizing Pixel Art像素风格画的矢量化
Atitit 图像处理Depixelizing Pixel Art像素风格画的矢量化 在去年的时候,偶然看到hqx算法. 一个高质量的插值放大算法. 与双线性插值等插值算法相比,这个算法放大后对人眼 ...
- Java final 关键词修饰类、方法、变量
1. final修饰类 被修饰的类不能被继承,也没有子类.假如随意创建这些类的子类,子类可能会错误的修改父类的实现细节.出于安全原因,类的实现细节不允许有任何改动.在创建对象模型的时候,确信这个类不 ...
- 浅谈linux 下,利用Nginx服务器代理实现ajax跨域请求。
ajax跨域请求对于前端开发者几乎在任何一个项目中都会用到,众所周知,跨域请求有三种方式: jsonp; XHR2 代理: jsonp: 这种应该是开发中是使用的最多的,最常见的跨域请求方法,其实aj ...
- MVC4做网站后台:用户管理 —用户
这块进行用户管理,可以浏览.查询已注册的用户,修改用户资料,删除用户等.没有做添加用户,不知是否必要.列表页还是使用easyui的datagrid.这个思路跟用户组的方式差不多. 1.接口Interf ...
- Web APi之捕获请求原始内容的实现方法以及接受POST请求多个参数多种解决方案(十四)
前言 我们知道在Web APi中捕获原始请求的内容是肯定是很容易的,但是这句话并不是完全正确,前面我们是不是讨论过,在Web APi中,如果对于字符串发出非Get请求我们则会出错,为何?因为Web A ...
- 应用程序框架实战三十八:项目示例VS解决方案的创建(一)
进行项目开发的第一步,是创建出适合自己团队习惯的VS解决方案,虽然我已经提供了项目示例,但毕竟是我创建的,你直接使用可能并不合适,另外你如果尝试模仿重新创建该示例,中间可能碰到各种障碍,特别是项目间的 ...
- 【技巧篇】解决悬浮的<header>、<footer>遮挡内容的处理技巧
引言 在现在的前端页面中,尤其是移动端,经常会需要将<header>或者是<footer>模块悬浮出来,跟随页面的滑动保持定位在页面的最上方或者是最下方,如下图所示. “回 ...