怎么用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 ...
随机推荐
- 去年做了什么?OA。
假前一天下午被经理和PM叫上楼,首要一个问题是我去年干了啥,我大致支吾了几句描述了下,一时也说不出个大概.后面就是一片悠长的面谈,什么没达到期望,公司状况不好.......哦,这是KPI评价啊,剩下的 ...
- 《Entity Framework 6 Recipes》中文翻译系列 (10) -----第二章 实体数据建模基础之两实体间Is-a和Has-a关系建模、嵌入值映射
翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 2-11 两实体间Is-a和Has-a关系建模 问题 你有两张有Is-a和Has-a ...
- JavaScript易错点
JavaScript知识点1.变量作用域 var a = 1;function test() { var a = 2; console.log(a); // 2} test(); ...
- Python介绍
本节内容 Python简史 Python是一门什么样的语言? Python的优点与缺点 Python解释器 一.Python简史 历史背景 在20世纪80年代,IBM和苹果已经掀起了个人电脑的浪潮.但 ...
- OPEN CASCADE Multiple Variable Function
OPEN CASCADE Multiple Variable Function eryar@163.com Abstract. Multiple variable function with grad ...
- Ubuntu 14.04 64bit 安装tensorflow(GPU版本)
本博客主要用于在Ubuntu14.04 64bit 操作系统上搭建google开源的深度学习框架tensorflow. 0.安装CUDA和cuDNN 如果要安装GPU版本的tensorflow,就必须 ...
- Android NDK开发Hello Word!
在之前的博客中已经为大家介绍了,如何在win环境下配置DNK程序,本篇我将带大家实现一个简单的Hello jni程序,让大家真正感受一下NDK开发的魅力.这里我们选择使用C+JAVA开发Android ...
- TOMCAT开放远程调试端口
方法1. WIN系统,在catalina.bat里: SET CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdw ...
- IOS遍历网页获取网页中<img>标签中的图片url
前言: 项目中遇见一个需求遍历网页中所有的<img>标签并且去处图片的url 第一步:编写获取<img >标签的正则表达式,代码如下: -(NSArray*)getImgTag ...
- MySQL utf8mb4 字符集:支持 emoji 表情符号
转载地址:http://www.linuxidc.com/Linux/2013-05/84360.htm 我用他的方法解决了问题,亲测可用,不要用Nnvicat for Mysql去查询编码,在服务器 ...