使用SAX方式生成XML文档
来源:互联网 发布:柏拉图表软件 编辑:程序博客网 时间:2024/06/06 02:59
一、创建SAXTransformerFactory对象
二、创建TransformeHandler对象
三、通过TransformerHandler对象创建一个Transformer对象
四、通过Transformer对象对生成的xml文件进行设置
五、创建Result对象,并且使其与handler关联
六、利用handler对象进行xm文件内容的编写
新建Book.java用于封装Book的属性:
package com.imooc.io;public class Book {private String id;private String name;private String author;private String year;private String price;public String getId() {return id;}public void setId(String id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getAuthor() {return author;}public void setAuthor(String author) {this.author = author;}public String getYear() {return year;}public void setYear(String year) {this.year = year;}public String getPrice() {return price;}public void setPrice(String price) {this.price = price;}}
新建SAXCreateXML.java,里面写使用SAX生成XML文件的方法,并用于测试:
package com.imooc.io;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.util.ArrayList;import javax.xml.transform.OutputKeys;import javax.xml.transform.Result;import javax.xml.transform.Transformer;import javax.xml.transform.TransformerConfigurationException;import javax.xml.transform.sax.SAXTransformerFactory;import javax.xml.transform.sax.TransformerHandler;import javax.xml.transform.stream.StreamResult;import org.xml.sax.SAXException;import org.xml.sax.helpers.AttributesImpl;public class SAXCreateXML {public static void main(String[] args){SAXCreateXML t = new SAXCreateXML();t.CreateXML();}public void CreateXML(){Book book1 = new Book();Book book2 = new Book();book1.setId("1");book1.setName("后会无期");book1.setAuthor("lcb");book1.setYear("2010");book1.setPrice("35");book2.setId("2");book2.setName("异次元");book2.setAuthor("lcb");book2.setYear("2011");book2.setPrice("40");ArrayList<Book> booklist = new ArrayList<Book>();booklist.add(book1);booklist.add(book2);//创建SAXTransformerFactory对象SAXTransformerFactory tff = (SAXTransformerFactory) SAXTransformerFactory.newInstance();//创建TransformeHandler对象try {TransformerHandler handler = tff.newTransformerHandler();// 3.通过TransformerHandler对象创建一个Transformer对象 Transformer tr = handler.getTransformer(); // 4.通过Transformer对象对生成的xml文件进行设置// 设置xml的编码//tr.setOutputProperty(OutputKeys.ENCODING, "UTF-8");// 设置xml的“是否换行”tr.setOutputProperty(OutputKeys.INDENT, "yes");File f = new File("src/newbook2.xml");if(!f.exists()){f.createNewFile();}//创建Result对象,并且使其与handler关联Result result = new StreamResult(new FileOutputStream(f));handler.setResult(result);//利用handler对象进行xm文件内容的编写//打开documenthandler.startDocument();AttributesImpl attr = new AttributesImpl();//打开bookstor开始标签handler.startElement("", "", "bookstore", attr);for(Book book : booklist){attr.clear();attr.addAttribute("", "", "id", "", book.getId());//打开book节点handler.startElement("", "", "book", attr);//创建name节点if(book.getName()!=null && !book.getName().trim().equals("")){//每次用之前清空attr的属性attr.clear();handler.startElement("", "", "name", attr);handler.characters(book.getName().toCharArray(), 0, book.getName().length());handler.endElement("", "", "name");}//创建authoe节点if(book.getAuthor()!=null && !book.getAuthor().trim().equals("")){//每次用之前清空attr的属性attr.clear();handler.startElement("", "", "author", attr);handler.characters(book.getAuthor().toCharArray(), 0, book.getAuthor().length());handler.endElement("", "", "author");}//创建year节点if(book.getYear()!=null && !book.getYear().trim().equals("")){//每次用之前清空attr的属性attr.clear();handler.startElement("", "", "year", attr);handler.characters(book.getYear().toCharArray(), 0, book.getYear().length());handler.endElement("", "", "year");}//创建price节点if(book.getPrice()!=null && !book.getPrice().trim().equals("")){//每次用之前清空attr的属性attr.clear();handler.startElement("", "", "price", attr);handler.characters(book.getPrice().toCharArray(), 0, book.getPrice().length());handler.endElement("", "", "price");}handler.endElement("", "", "book");}handler.endElement("", "", "bookstore");handler.endDocument();} catch (TransformerConfigurationException e) {// TODO Auto-generated catch blocke.printStackTrace();}catch (FileNotFoundException e) {e.printStackTrace();}catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}catch (SAXException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}
运行后,在过程src文件目录下会生成newbook2.xml文件,XML代码如下:
<?xml version="1.0" encoding="UTF-8"?><bookstore><book id="1"><name>后会无期</name><author>lcb</author><year>2010</year><price>35</price></book><book id="2"><name>异次元</name><author>lcb</author><year>2011</year><price>40</price></book></bookstore>
0 0
- 使用SAX方式生成XML文档
- SAX方式解析XML文档
- sax方式解析xml文档
- Android 使用Dom与SAX解析xml文档的方式
- 使用SAX处理XML文档
- 使用SAX处理XML文档
- 使用 SAX 处理 XML 文档
- 使用 SAX 处理 XML 文档
- 使用 SAX 处理 XML 文档
- 使用SAX解析xml文档
- 使用SAX写XML文档
- 使用SAX处理XML文档
- 使用SAX解析XML文档
- 使用SAX解析XML文档
- 使用Sax生成xml文件
- SAX生成和解析XML文档
- SAX解析和生成XML文档
- SAX解析和生成XML文档
- String 在 JVM 的存储结构
- MBR分区结构、DPT分区表、EBR扩展引导
- 使UItableViewCell 变为可删除状态
- UVA 537 字符串中的公式计算字母识别
- LINE22 中断
- 使用SAX方式生成XML文档
- 根据控件名称查找控件
- Android_RadioGroup实现Tab
- C和C++混合编程(error C2059: syntax error : 'string')
- jqgrid单元格内容过长 样式处理
- jbrowse中配置左边菜单的解决方法
- 使用Struts2和jQuery EasyUI实现简单CRUD系统(二)——ajax与struts2的交互
- Thymeleaf基本知识
- hdu 5443 The Water Problem 2015 ACM/ICPC Asia Regional Changchun Online