
怎么用SAX生成xml文件
发布日期:2021-05-09 08:19:24
浏览次数:25
分类:原创文章
本文共 5379 字,大约阅读时间需要 17 分钟。
1 public void createXML() throws Exception{ 2 Book b1 = new Book(); 3 b1.setId("1"); 4 b1.setName("Core java"); 5 b1.setAuthor("Horstmann"); 6 b1.setPrice("36"); 7 b1.setVersion("4.0"); 8 Book b2=new Book(); 9 b2.setId("2"); 10 b2.setName("Thinking in java"); 11 b2.setAuthor("jackli"); 12 b2.setPrice("50"); 13 b2.setVersion("5.0"); 14 b2.setLanguage("English"); 15 ArrayList<Book> booklist=new ArrayList<Book>(); 16 booklist.add(b1); 17 booklist.add(b2); 18 19 //1:创建一个SAXTransformerFactory对象 20 SAXTransformerFactory saxtransformerfactory = (SAXTransformerFactory) SAXTransformerFactory.newInstance(); 21 //2:创建TransformerHandler对象 22 TransformerHandler transformerhandler=saxtransformerfactory.newTransformerHandler(); 23 //3:创建Transformer对象 24 Transformer transformer=transformerhandler.getTransformer(); 25 //4:利用transformer的对象对xml文件格式进行设置 26 //1:利用OutputKeys.ENCODING设定xml文件的编码 27 transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8"); 28 //2:利用OutputKeys.INDENT设定xml文件是否换行 29 transformer.setOutputProperty(OutputKeys.INDENT, "yes"); 30 //5:创建file对象用来保存xml文件 31 File file=new File("C:\\Users\\XIA\\Desktop\\book2.xml"); 32 if(!file.exists())//用一个if语句判断,file文件是否存在,如果不存在的话,则 创建一个相应的file文件 33 { 34 file.createNewFile(); 35 } 36 37 //6创建RESULT对象,使其与TransformerHandler的对象相关联 38 Result result=new StreamResult(new FileOutputStream(file)); 39 transformerhandler.setResult(result); 40 41 /* 42 * 上面准备工作完毕,接下来就应该利用TransformerHandler对象对xml文件的节点进行编写 43 * 7:接下来主要工作就是利用startDocument,endDocument,startElement,endElement等方法编写bookstore的各个节点 44 * 8: //创建AttributesImpl对象,为下面循环使用attr而做准备的,是xml文件中的每一个节点都可以赋属性 45 * 9:注意一定要清空bookstore中attr属性,因为如果bookstore中属性值存在的话,是会影响后面book节点的属性值的 46 * 10:对于节点之间的文本文件的建立用characters()方法,其中第一个参数是char[]数组,第二个参数是数组的开始位置,第三个参数是数组的结束位置。 47 */ 48 49 transformerhandler.startDocument(); 50 AttributesImpl attr=new AttributesImpl(); 51 52 transformerhandler.startElement("", "", "bookstore", attr); 53 for (Book book : booklist) { 54 attr.clear(); 55 attr.addAttribute("", "", "id", "", "1"); 56 transformerhandler.startElement("", "", "book", attr); 57 /* 58 * 创建name节点 59 */ 60 if(book.getName()!=null&&!book.getName().trim().equals("")) 61 { 62 attr.clear(); 63 transformerhandler.startElement("", "", "name", attr); 64 transformerhandler.characters(book.getName().toCharArray(), 0, book.getName().length()); 65 transformerhandler.endElement("", "", "name"); 66 } 67 /* 68 * 创建author节点 69 */ 70 if(book.getAuthor()!=null&&!book.getAuthor().trim().equals("")) 71 { 72 attr.clear(); 73 transformerhandler.startElement("", "", "author", attr); 74 transformerhandler.characters(book.getAuthor().toCharArray(), 0, book.getAuthor().length()); 75 transformerhandler.endElement("", "", "author"); 76 } 77 /* 78 * 创建price节点 79 */ 80 if (book.getPrice()!=null&&!book.getPrice().trim().equals("")) { 81 attr.clear(); 82 transformerhandler.startElement("", "", "price", attr); 83 transformerhandler.characters(book.getPrice().toCharArray(), 0, book.getPrice().length()); 84 transformerhandler.endElement("", "", "price"); 85 } 86 /* 87 * 创建version节点 88 */ 89 if(book.getVersion()!=null&&!book.getVersion().trim().equals("")) 90 { 91 attr.clear(); 92 transformerhandler.startElement("", "", "version", attr); 93 transformerhandler.characters(book.getVersion().toCharArray(), 0, book.getVersion().length()); 94 transformerhandler.endElement("", "", "version"); 95 } 96 /* 97 * 创建language节点 98 */ 99 if (book.getLanguage()!=null&&!book.getLanguage().trim().equals("")) {100 attr.clear();101 transformerhandler.startElement("", "", "language", attr);102 transformerhandler.characters(book.getLanguage().toCharArray(), 0, book.getLanguage().length());103 transformerhandler.endElement("", "", "language");104 }105 106 transformerhandler.endElement("", "", "book");107 }108 transformerhandler.endElement("", "", "bookstore");109 transformerhandler.endDocument();110 }111 112 public static void main(String[] args) throws Exception {113 SAXTest test=new SAXTest();114 test.createXML();115 }
注意:
//6创建RESULT对象,使其与TransformerHandler的对象相关联 Result result=new StreamResult(new FileOutputStream(file)); transformerhandler.setResult(result);
这里面创佳妮result对象,必须在调用StartDocument()方法之前开始调用,而且这一步是把handler对象与result结合在一起的关键。
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2025年04月24日 22时45分27秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Linux中install命令你有用过吗?用途很大!
2023-02-03
Linux中Kill进程的N种方法
2023-02-03
Linux中Mysql的简介和安装
2023-02-03
Linux中MySQL配置文件my.cnf参数优化
2023-02-03
Linux中rpm命令用法
2023-02-03
Linux中systemctl命令骨灰级详解
2023-02-03
Linux中telnet命令
2023-02-03
Linux中vim编辑器的使用
2023-02-03
Linux中yum和apt-get用法及区别
2023-02-03
linux中~和/的区别
2023-02-03
linux中下载和安装git2.3.0
2023-02-03
linux中出现不在 sudoers 文件中。此事将被报告的解决方法
2023-02-03
linux中分区工具的使用
2023-02-03
linux中压缩与解压缩大全 - linux中各种文件格式的解压缩
2023-02-03
Linux中如何使用 mtime 查看文件的最后修改时间
2023-02-03
Linux中如何查找文件的内容
2023-02-03
Linux中如何查询每个进程和每个用户的内存使用情况?
2023-02-03
Linux中如何查询谁登录过偷偷做坏事?这4个命令绝对可以!
2023-02-03
Linux中如何终止进程?这三种办法要刻在脑子里
2023-02-03
Linux中如何锁定文件?flock命令一定要了解!
2023-02-03