怎么用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 ...
随机推荐
- Step by step SQL Server 2012的安装
原创地址:http://www.cnblogs.com/jfzhu/p/4006744.html 转载请注明出处 计算机要先设置固定ip,加入域,然后安装账号需要有本地管理员的权限. 演示环境的操作系 ...
- JSON Web Token实际应用
一.JWT认证方式的实现方式 1.客户端不需要持有密钥,由服务端通过密钥生成Token. 2.客户端登录时通过账号和密码到服务端进行认证,认证通过后,服务端通过持有的密钥生成Token,Token中一 ...
- KnockoutJS 3.X API 第六章 组件(5) 高级应用组件加载器
无论何时使用组件绑定或自定义元素注入组件,Knockout都将使用一个或多个组件装载器获取该组件的模板和视图模型. 组件加载器的任务是异步提供任何给定组件名称的模板/视图模型对. 本节目录 默认组件加 ...
- TSql 巧用Alt 键
1,查看表的信息 在TSql 编辑器中,选中一个表,如图 点击Alt+F1,就可以查看表的属性定义 2,使用alt批量插入逗号 在Tsql中使用 in 子句,在(value_List)列表中,经常有很 ...
- C#一探究竟——枚举
枚举是值类型而System.Enum却是引用类型的原因 Q:在C#里,我们如何表达枚举类型? A:你可以使用enum关键字(keyword)来声明一个枚举类型(enum type): // Cod ...
- VS创建MVC出错解决方法
搞定
- 解密jQuery内核 DOM操作的核心函数domManip
domManip是什么 dom即Dom元素,Manip是Manipulate的缩写,连在一起就是Dom操作的意思. .domManip()是jQuery DOM操作的核心函数 对封装的节点操作做了参数 ...
- PHP性能测试工具xhprof安装与使用
原文链接:http://www.orlion.ga/711/ 一.安装 wget https://pecl.php.net/get/xhprof-0.9.4.tgz tar zxf xhprof-0. ...
- NFS Volume Provider(Part III) - 每天5分钟玩转 OpenStack(64)
今天我们将前一小节创建的 NFS volume “nfs-vol-1” attach 到 instance “c2”上. 这里我们重点关注 nova-compute 如何将“nfs-vol-1” at ...
- android给View设置边框 填充颜色 弧度
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http: ...